1

パネルの開閉数に応じて、主に div とスタイル属性を変更する動的ページで入力フィールドを見つけようとしています。したがって、Firepath によって提供される Xpath は、こ​​こでは役に立ちません。検索しようとしている入力フィールド/テキスト フィールドにはクラスがあります

クラス = v-textfield v-textfield-small small

しかし、cssSelector を使用して指定されたクラス名の要素を見つけようとすると、ドライバーは 3 つの同様のテキスト フィールドを取得します。

  1. 「v-textfield v-textfield-small small readonly」
  2. 「v-textfield v-textfield-small small ws-right」
  3. "v-textfield v-textfield-small 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 に答える