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

时间:2013-11-08 14:24:14

标签: testing selenium selenium-webdriver automated-tests

我正在研究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");

2 个答案:

答案 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();