Selenium在td中搜索文本并获得同一行的另一个td

时间:2017-07-14 11:31:36

标签: java selenium selenium-webdriver

我的表格如下所示: clm1 clm2 clm3

  1. 1 b hi
  2. 2 c hello
  3. 3 d hi​​
  4. 现在要求是我必须找到所有的' hi'然后单击同一行的另一个单元格。对于例如在第一次出现时,我必须点击1,再次点击3。

    我能找到' hi'使用下面的代码,但如何在同一行上找到相应的单元格。

      

    列出rows = driver.findElements(By.xpath(" // span [text()=' hi']"));

    <table>
      <tr class="abc">
        <td class="efg">
          <a id="asg">1</a>
        </td>
      </tr>
      <tr class="abc">
        <td class="efg">
          <span>1</span>
        </td>
      </tr>
      <tr class="abc">
        <td class="efg">
          <span>1</span>
        </td>
      </tr>
    </table>
    

    请在移动设备上输入时忽略拼写错误。 任何帮助将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

By.xpath("//td[./span[text()='hi']]/../td[1]")将返回该匹配行的第一列。

答案 1 :(得分:1)

这是C#中的简单内容。我希望你能将它转换为java。

var tableRows = driver.FindElements(By.TagName("tr"));
foreach(var tableRow in tableRows)
{
   var td = tableRow.FindElements(By.TagName("td"));
   if(td[2].Text.Contains("hi"))
   {
      td[0].FindElement(By.TagName("a")).Click();
   }
}

答案 2 :(得分:0)

如果我明白你应该使用xpath:

.// yourow /跨度[否(文本()=&#39;您好&#39;)] [..//跨度[文本()=&#39;您好&#39;]]

你得到所有兄弟&#34;或者&#34;姐妹&#34;在html树中没有文本Hi但与单元格在同一行包含文本&#34;嗨&#34;