我试图在动态页面中找到一个输入字段,该字段根据面板打开或关闭的数量来改变 web 结构,主要是 div 和 style 属性。所以 Firepath 给出的 Xpath 在这里没有帮助。我要查找的输入字段/文本字段有一个类
class = v-textfield v-textfield-small 小
但是当我尝试使用 cssSelector 查找具有给定类名的元素时,驱动程序会抓取 3 个类似的文本字段:
- “v-textfield v-textfield-small 小只读”
- "v-textfield v-textfield-small 小 ws-right"
- “v-textfield v-textfield-small 小”
只是为了便于理解,这里是包含文本字段的面板的 html 代码。
<div id="formpanel">
...
<div class="v-absolutelayout-wrapper" style="top: 50px">Some label</div>
<div class="v-absolutelayout-wrapper" style="top: 57px">
<input class="v-textfield v-textfield-small small readonly"></input>
</div>
<div class="v-absolutelayout-wrapper" style="top: 65px">Some label2</div>
<div class="v-absolutelayout-wrapper" style="top: 69px">
<input class="v-textfield v-textfield-small small"></input>
</div>
<div class="v-absolutelayout-wrapper" style="top: 75px">Some label</div>
<div class="v-absolutelayout-wrapper" style="top: 79px">
<input class="v-textfield v-textfield-small small ws-right"></input>
</div>
</div>
我正在使用以下代码填写表格。但正如我所说,它仅在样式属性匹配时才有效,但页面会根据打开或关闭的面板数量来改变它。
String style;
List<WebElement> ttN = driver.findElements(By.cssSelector("div.v-absolutelayout-wrapper"));
for(WebElement div : ttN){
style = div.getAttribute("style").toString();
if(style.equals("top: 69px")){
div.findElement(By.cssSelector("input.v-textfield.v-textfield-small.small")).sendKeys("111-Auto");
}
else if(style.equals("top: 79px")){
div.findElement(By.tagName("input.v-textfield.v-textfield-small.small.v-textfield-ws-right.ws-right")).sendKeys("5000");
}
}