如何从使用自定义属性的 HTML 元素中获取文本?

Jav*_*ner 5 testing selenium automated-tests selenium-webdriver

我正在研究 Selenium 框架 2.0 Web 驱动程序,我想从具有 data-automation-id 等属性的范围中获取价值。HTML代码如下

<span data-automation-id="SEL_ERR">
  Error Description
</span>
Run Code Online (Sandbox Code Playgroud)

现在我想用 in span 读取文本,该文本的属性data-automation-id设置为 SEL_ERR。

有人可以帮助我修复代码,因为我已经尝试过下面的代码但徒劳无功。

driver.findElement(By.tagName("span")).getAttribute("data-automation-id");
Run Code Online (Sandbox Code Playgroud)

Arr*_*ran 6

很简单,真的。目前你所得到的非常 第一 span的整个文件内。

你怎么知道那是不是你想要的?

见面,.findElements()。它不会获取满足定位器的第一个元素,而是为您提供满足条件的每个元素的列表。

你没有分享很多 HTML,所以我不知道这是否是一个独特的元素。

但是,您有两种方法:

1)使用.findElements,以获得所有span元素,然后筛选下来的元素特别有属性data-automation-id与值SEL_ERR

或(推荐):

2).findElement与专门针对 1) 中讨论的元素的选择器一起使用...如果 Selenium 找不到它,使用更有针对性的选择器,那么您就知道它不存在。

driver.findElement(By.cssSelector("span[data-automation-id='SEL-ERR']"));
Run Code Online (Sandbox Code Playgroud)

或者:

3) 对 2) 的修改。如果 Selenium 找不到它,它将抛出异常。例外是昂贵的。您可以.findElements改用(在 1 中提到)),如果找不到您要查找的元素,它将简单地返回一个空列表:

driver.findElements(By.cssSelector("span[data-automation-id='SEL-ERR']")).size() != 0;
Run Code Online (Sandbox Code Playgroud)