📜  在跨度之间按文本查找元素 (1)

📅  最后修改于: 2023-12-03 15:08:06.337000             🧑  作者: Mango

在跨度之间按文本查找元素

在开发过程中,经常需要在某一个跨度内查找特定文本所对应的元素。通常有两种情况:

  1. 在某个区域内查找特定文本所对应的元素。
  2. 在多个区域内查找特定文本所对应的元素。

下面将分别介绍这两种情况的实现方法。

在某个区域内查找特定文本所对应的元素

在单一的区域内查找特定文本所对应的元素,可以使用 element.all(by.cssContainingText()) 方法。该方法需要传入两个参数:css 选择器和要查找的文本。

下面是一段示例代码:

const searchText = 'text';
const searchArea = element(by.id('search-area'));

const matchingElements = searchArea.all(by.cssContainingText('p', searchText));

上述代码会在 searchArea 范围内查找所有包含文本 textp 元素,并将它们存储在 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 类的元素中查找所有包含文本 textp 元素,并将所有包含有该元素的 search-area 元素存储在 matchingElements 变量中。

总结

在跨度之间按文本查找元素是前端测试中一项非常常见的任务,掌握这个技能可以有效提高测试效率。在单一区域内查找元素,使用 element.all(by.cssContainingText()) 方法即可。在多个区域内查找元素,可以使用 element.all() 方法并链式调用 filter() 方法进行筛选。