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));

另外,我不确定您正在测试的应用程序,但是如果有多个元素的 id 以“form_MenuBar:j_id”开头,那么 findElement 只会找到第一个,这可能不是您的链接试图寻找。

您可以使用 findElements 它将返回所有匹配的元素列表,然后遍历这些元素,直到找到您真正想要的元素。

于 2013-02-12T21:02:45.710 回答