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

问题描述 投票:4回答:2

我正在使用Selenium framework 2.0 Web驱动程序,我希望从跨度中获取值,该跨度具有诸如data-automation-id之类的属性。 HTML代码如下

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

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

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

driver.findElement(By.tagName("span")).getAttribute("data-automation-id");
testing selenium selenium-webdriver automated-tests
2个回答
4
投票

很简单,真的。当前,您正在整个文档中获得非常 第一 span

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

开会,.findElements()。它会为您提供符合条件的every元素列表,而不是获取符合定位符的第一个元素。

您尚未共享太多HTML,所以我不知道这是否是唯一元素。

但是,您有两种解决方法:

1)使用.findElements来获取span元素的all,然后将其过滤为具有data-automation-id属性且值为SEL_ERR]的元素。

或(推荐):

2)将.findElement与专门针对1)中讨论的元素的选择器一起使用...如果Selenium无法找到它,而针对性更强的选择器,则说明它不存在。

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

或:

3)对2)的修改。如果Selenium无法找到它,它将抛出异常。例外情况代价高昂。您可以改用.findElements(在1中提到)),如果找不到所需的元素,它将仅返回一个空列表:

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

0
投票

我正在使用硒,jquery的元素和javascript。

© www.soinside.com 2019 - 2024. All rights reserved.