如何从selenium webdriver获取GWT文本框值?

时间:2013-01-06 10:51:22

标签: html gwt selenium

我正在尝试使用selenium测试我的GWT应用程序,GWT Textbox生成的html如下所示:

<input type="text" class="gwt-TextBox" >

没有值,但是从UI我可以看到文字,有没有办法从selenium获取价值?

更新:我可以从selenium找到input,但无法获取其值,例如上面input的值是“blahblah ...”,我可以从页面UI看到,但无法从上面的HTML获得。

4 个答案:

答案 0 :(得分:1)

@Bhumika是正确的,对于你想要操作的每个元素都有一个唯一的id属性是良好的编程习惯。但是如果你没有这个并且无法添加它,你仍然可以很好地处理这个特殊情况:placeholder属性。要找到该元素,请使用XPath //input[@placeholder='Input note title...']。要获取字段的值,请获取其value属性。

答案 1 :(得分:1)

就像@BMT所说,你应该使用getAttribute来获取值,就像这个

一样

GWT代码

TextBox textField = new TextBox(); 
textField.ensureDebugId("textFieldId");

Selenium Code

driver.findElement(By.id("textFieldId")).getAttribute("value");

您可以使用浏览器的Inspect Element Tool(F12)查看一个元素的所有属性(可见或不可见),然后获得您想要的值。

答案 2 :(得分:0)

每个小部件都应该有一个用于selenium测试的id。这里selenium不识别元素,并且您无法获得UI上的值。所以你必须为输入小部件设置id。 即

TextBox textField= new TextBox();    
textField.getElement().setId("name");

答案 3 :(得分:0)

如果您希望生成的DOM看起来像

<input type="text" class="gwt-TextBox" value="myValue">

你必须使用

textBox.getElement().setAttribute("value", "myValue");

而不是

textBox.setText("myValue")

这是因为setText只会更新value 属性(即theDomElement.value = "myValue"),不会更新{{} 1}} 属性(即value)。

更新属性时,浏览器不会更新关联的属性。