我正在尝试使用 selenium 测试我的 GWT 应用程序,GWT Textbox 生成的 html 如下所示:
<input type="text" class="gwt-TextBox" >
那里没有价值,但从 UI 我可以看到文本,有没有办法从硒中获取价值?
更新:我可以input
从 selenium 中找到它,但无法获取它的值,例如上面的值input
是“blahblah ...”,我可以从页面 UI 中看到,但无法从上面的 html 中获取。
@Bhumika 是正确的,id
对于您想要操作的每个元素都有一个独特的属性是很好的编程习惯。但是,如果您没有它并且无法添加它,那么您仍然可以很好地处理这种特殊情况:placeholder
属性。要定位元素,请使用 XPath //input[@placeholder='Input note title...']
。要获取字段的值,请获取其value
属性。
就像@BMT 说的那样,你应该使用getAttribute 来获取值,就像这样
GWT 代码
TextBox textField = new TextBox();
textField.ensureDebugId("textFieldId");
硒代码
driver.findElement(By.id("textFieldId")).getAttribute("value");
您可以使用浏览器的 Inspect Element Tool (F12) 查看一个元素的所有属性(可见或不可见),然后获取所需的值。
每个小部件都应该有一个用于硒测试的 id。这里 selenium 不识别元素,您无法获取 UI 上的值。所以你必须为输入小部件设置 id。IE
TextBox textField= new TextBox();
textField.getElement().setId("name");
如果您希望生成的 DOM 看起来像
<input type="text" class="gwt-TextBox" value="myValue">
你必须使用
textBox.getElement().setAttribute("value", "myValue");
代替
textBox.setText("myValue")
那是因为setText
只会更新value
属性(即theDomElement.value = "myValue"
),而不会更新value
属性(即<input value="myValue"/>
)。
更新属性时,浏览器不会更新关联的属性。