1

我试图在动态页面中找到一个输入字段,该字段根据面板打开或关闭的数量来改变 web 结构,主要是 div 和 style 属性。所以 Firepath 给出的 Xpath 在这里没有帮助。我要查找的输入字段/文本字段有一个类

class = v-textfield v-textfield-small 小

但是当我尝试使用 cssSelector 查找具有给定类名的元素时,驱动程序会抓取 3 个类似的文本字段:

  1. “v-textfield v-textfield-small 小只读”
  2. "v-textfield v-textfield-small 小 ws-right"
  3. “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");
}
}
4

3 回答 3

1

使用以下 xpath 相同:-

//div[@class='v-absolutelayout-wrapper' and contains(.,'Some')]

这将返回输出为: -

1:一些标签

2:一些标签2

3:一些标签

如果您只想要带有 label2 输入标签的元素,请使用此 xpath

//input[@class='v-textfield v-textfield-small small']

更详细

//div[@id='formpanel']//input[@class='v-textfield v-textfield-small small']

希望它会帮助你:)

于 2015-10-09T11:28:54.450 回答
0

您可以使用以下 Xpath:

//input[@class='v-textfield v-textfield-small small readonly']
//input[@class='v-textfield v-textfield-small small']
//input[@class='v-textfield v-textfield-small small ws-right']
于 2015-10-09T11:53:07.230 回答
0

尝试:

.v-textfield.v-textfield-small.small:not(.readonly):not(.ws-right)
于 2015-10-09T11:56:43.533 回答