使用Selenium

时间:2016-04-18 13:13:56

标签: java dom selenium-webdriver

在Firebug和其他DevTools中,您可以获取与HTML元素对应的DOM属性和值。

如何使用selenium-java代码提取这些值? 我曾尝试getAttribute(),但它似乎只适用于HTML属性,而不适用于“属性”或“拼写检查”等DOM属性。

我采用这种方法的原因是与<input>文本字段(下面的代码段)相关联的值是运行时生成的,并且使用Knockout将数据绑定到它。因此,用getText()getAttribute("value")getAttribute("text")getAttribute("innerHTML")getAttribute("innertext")等标准方法捕获它们是不可能的。

HTML元素的HTML代码段:

<input class="form-control" type="text" style="cursor: text" readonly="readonly" data-bind="textInput: url">

Firebug's DOM panel displaying DOM properties of an <input> element

2 个答案:

答案 0 :(得分:1)

根据Selenium documentation,只有getAttribute()函数,描述如下:

  

获取元素的给定属性的值。将返回当前值,即使在页面加载后已经修改了该值。更确切地说,此方法将返回给定属性的值,除非该属性不存在,在这种情况下返回具有相同名称的属性的值(例如,对于&#34; value&#34;属性textarea元素)。如果未设置任何值,则返回null。 ...

根据这一点,如果没有名为getAttribute("value")的HTML属性,value应该返回DOM属性值。

如果情况并非如此,则可能是时间问题。即在设置之前,Selenium会读取该值。

答案 1 :(得分:1)

我知道这是一个古老的问题,但它可能会让其他人伸出援手

在控制台中使用此功能

$$("input.form-control").value

如果返回所需要的,则必须使用Javascript执行WebDriver,即

driver.ExecuteScript("var data = arguments[0].value; return data;", (Element as RemoteWebElement)