1

私のxpathは:

//*[@id='form_MenuBar:j_id24']/span

値 # 24 が変更されます。

//*[@id='form_MenuBar:j_id48']/span

試しましたが、うまくいきません。

driver.findElement(By.xpath("//a[contains(@id,'form_MenuBar:j_id$')]/span"));

ソース XML:

<li class="ui-menuitem ui-widget ui-corner-all ui-menuitem-active" role="menuitem">
  <a id="form_MenuBar:j_id24" class="ui-menuitem-link ui-corner-all ui-state-hover" href="/Demand/j_spring_security_logout">
    <span class="ui-menuitem-text">Log off</span>
  </a>
</li>
4

2 に答える 2

2

ちょうど試して

driver.findElement(By.xpath("//a[contains(@id,'form_MenuBar:j_id')]/span"));

Xpath で contains を使用している場合は、使用する必要はありません'$'

于 2013-02-11T04:55:40.213 に答える
0

あなたはJavaを使用しているようですので、それに基づいて答えようとします。私は Java 開発者ではないので、構文的に正しくない場合は申し訳ありません。

変更されているのが ID 内の番号だけで、ID がわかっている場合は、次のようにできます。

driver.findElement(By.id(String.format("form_MenuBar:j_id%d", the_id));

また、あなたがテストしているアプリケーションについてはわかりませんが、「form_MenuBar:j_id」で始まる ID を持つ要素が複数ある場合、findElement は最初の要素のみを検索しますが、これはリンクではない可能性があります。見つけようとしています。

それに一致するすべての要素のリストを返すfindElementsを使用して、本当に必要なものが見つかるまでそれらを繰り返します。

于 2013-02-12T21:02:45.710 に答える