我正在研究Selenium framework 2.0 Web驱动程序,我希望从具有data-automation-id等属性的span中获取价值。 HTML代码如下
<span data-automation-id="SEL_ERR">
Error Description
</span>
现在我想阅读带有 data-automation-id 属性设置为SEL_ERR的span的文本。
有些人可以帮我修复代码,因为我已经尝试了下面的代码但是徒劳无功。
driver.findElement(By.tagName("span")).getAttribute("data-automation-id");
答案 0 :(得分:4)
这很简单,真的。您目前正在整个文档中获得非常 第一个 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找不到它,它会抛出异常。例外是昂贵的。您可以使用.findElements
代替(在1中提及),如果找不到您要查找的元素,它将返回一个空列表:
driver.findElements(By.cssSelector("span[data-automation-id='SEL-ERR']")).size() != 0;
答案 1 :(得分:0)
我正在使用硒,jquery和javascript的元素。
我有不同的属性,这些属性属于没有ID或名称的botton,只是具有data-automation-id,如以下示例所示:
<button type="button"
data-automationid="FieldRenderer-name"
data-selection-invoke="true"
class="ms-Link nameField_f59ebb65 clickable_f59ebb65 root-203"
title="BD Operacion">BD Operacion</button>
DataWerhouse
如您所见,名称data-automationid被重复
我如何访问该元素?
这不起作用,是我最近的
driver.FindElement(By.CssSelector("//button[@data-automation-id='FieldRenderer-name'])[1]")).Click();