XPath Java Selenium尝试根据另一个文本中的文本单击一个col中的值

时间:2016-09-06 00:29:45

标签: java selenium xpath

我需要根据第1列中的文本单击html表第5列中的按钮。第1列是用户名第5列是一个没有ID的按钮,我需要单击。每个表格单元格中都有多个Li。所以第一个单元格的名称,电子邮件,公司都在Li中。

我想说是user name = foo然后点击第5栏中的按钮

我当前在第1列中查找用户名的xpath就是这样(并且有效)

driver.findElement(By.xpath("//tr//td//li[contains(text(), 'Edith Fields')]"));

但我不知道怎么说现在我有行用来点击该行第5列中的按钮。另外我假设xpath我已经为特定的<Li>返回了一个web元素<TR>所以我可能需要得到它的父母?

不粘贴整个表格HTML,但这是一行col 1和col 5

<tr class=" ev_dhx_skyblue">
<td valign="middle" bgcolor="white" align="left" title=" Edith Fields email@foo.com ">
<ul>
<li title=" Edith Fields email@foo.com "> Edith Fields </li>
<li class="last" title=" Edith Fields email@foo.com "> email@foo.com </li>
</ul>


<td valign="middle" bgcolor="white" align="left">
<ul>
<li>
<li class="last">
<a onclick="liftAjax.lift_ajaxHandler("ffffgggg=true", null, null, null); return false;">Reset Password</a>
</li>
</ul>

2 个答案:

答案 0 :(得分:0)

你应该尝试在xpath下面使用: -

String xpath = "(.//td[descendant::li[contains(text(), 'Edith Fields')]]/following::td//a[contains(text(), 'Reset Password')])[1]"

或者

String xpath = "(.//td[descendant::li[contains(text(), 'Edith Fields')]]/following::a[contains(text(), 'Reset Password')])[1]"

或者

String xpath = "(.//td[descendant::li[contains(text(), 'Edith Fields')]]/following::a)[1]"

使用上述xpath中的任何一个来查找如下元素: -

driver.findElement(By.xpath(xpath));

答案 1 :(得分:0)

如果您确定它始终保持第5列,请使用此

//td[contains(.,'Edith Fields')]/following-sibling::td[4]//a

否则使用此

//td[contains(.,'Edith Fields')]/following-sibling::td[contains(.,'Reset Password')]//a