无法找到动态X路径

时间:2013-02-11 04:48:55

标签: xpath webdriver selenium-webdriver

我的xpath是:

  

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

,值#24改变。

  

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

我试过但不起作用。

  

driver.findElement(By.xpath( “//一个[含有(@ ID, 'form_MenuBar:j_id $')] /跨度”));

源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>

2 个答案:

答案 0 :(得分:2)

试试

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

如果您在xpath中使用contains,则无需使用'$'

答案 1 :(得分: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,它将返回与之匹配的所有元素的列表,然后遍历这些元素,直到找到你真正想要的那个。