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