📅  最后修改于: 2023-12-03 15:08:06.337000             🧑  作者: Mango
在开发过程中,经常需要在某一个跨度内查找特定文本所对应的元素。通常有两种情况:
下面将分别介绍这两种情况的实现方法。
在单一的区域内查找特定文本所对应的元素,可以使用 element.all(by.cssContainingText())
方法。该方法需要传入两个参数:css 选择器和要查找的文本。
下面是一段示例代码:
const searchText = 'text';
const searchArea = element(by.id('search-area'));
const matchingElements = searchArea.all(by.cssContainingText('p', searchText));
上述代码会在 searchArea
范围内查找所有包含文本 text
的 p
元素,并将它们存储在 matchingElements
变量中。
如果需要在多个区域内查找特定文本所对应的元素,可以使用 element.all()
方法,并链式调用 filter()
方法进行筛选。
下面是一段示例代码:
const searchText = 'text';
const searchAreas = element.all(by.css('.search-area'));
const matchingElements = searchAreas.filter((searchArea) => {
return searchArea.element(by.cssContainingText('p', searchText)).isPresent();
});
上述代码会在所有包含 search-area
类的元素中查找所有包含文本 text
的 p
元素,并将所有包含有该元素的 search-area
元素存储在 matchingElements
变量中。
在跨度之间按文本查找元素是前端测试中一项非常常见的任务,掌握这个技能可以有效提高测试效率。在单一区域内查找元素,使用 element.all(by.cssContainingText())
方法即可。在多个区域内查找元素,可以使用 element.all()
方法并链式调用 filter()
方法进行筛选。