我正在尝试使用selenium测试我的GWT应用程序,GWT Textbox生成的html如下所示:
<input type="text" class="gwt-TextBox" >
没有值,但是从UI我可以看到文字,有没有办法从selenium获取价值?
更新:我可以从selenium找到input
,但无法获取其值,例如上面input
的值是“blahblah ...”,我可以从页面UI看到,但无法从上面的HTML获得。
答案 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
)。
更新属性时,浏览器不会更新关联的属性。