我正在使用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");
很简单,真的。当前,您正在整个文档中获得非常 第一 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;
我正在使用硒,jquery的元素和javascript。