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

标签 testing selenium selenium-webdriver automated-tests

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

<span data-automation-id="SEL_ERR">
  Error Description
</span>

现在我想读取具有属性 data-automation-id 设置为 SEL_ERR 的文本。

有人可以帮助我修复代码吗,因为我已经尝试了下面的代码但没有成功。

driver.findElement(By.tagName("span")).getAttribute("data-automation-id");

最佳答案

其实很简单。您目前在整个文档中获得非常 第一个 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']"));

或:

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

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

关于testing - 如何从使用自定义属性的 HTML 元素中获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19861321/

相关文章:

javascript - 内部对象函数的 SinonJS calledOnce 或 callCount 问题

java - 使用多个示例时如何在 Cucumber 功能中参数化用户名和密码

java - testng 中的并行方法执行仅执行从类中调用的最后一个方法

docker - 为什么我无法从我的 GitLab 作业连接到 selenium docker-compose 服务?

java - headless chrome + 忽略证书错误

java - 如何使用selenium关闭弹出窗口?

java - 无需等待 Selenium 即可快速断言元素不存在

ruby-on-rails - RSpec:哪个是测试授权的正确位置?

Java 测试和 Jenkins 集成

css - 跨浏览器测试 : is there a way to run and control multiple browsers at the same time?