【问题标题】:Selenium search a text in td and get another td of same rowSelenium 在 td 中搜索文本并获取同一行的另一个 td
【发布时间】:2017-12-19 11:51:21
【问题描述】:

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

  1. 1 b 嗨
  2. 2c 你好
  3. 3d 嗨

现在的要求是我必须找到所有的“嗨”并单击同一行的另一个单元格。例如在第一次出现时,我必须点击 1,然后再点击 3。

我可以使用下面的代码找到“hi”,但是如何在同一行上找到相应的单元格。

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

请忽略我在手机上输入的错字。 任何帮助将不胜感激。

【问题讨论】:

标签: java selenium selenium-webdriver


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是 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();
       }
    }
    

    【讨论】:

      【解决方案3】:

      如果我理解你应该使用 xpath:

      .//yourrow/span[not(text()='Hi')][..//span[text()='Hi']]

      您会在 html 树中获得所有“兄弟”或“姐妹”,它们没有文本 Hi,但与包含文本“Hi”的单元格位于同一行

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-06
        • 1970-01-01
        • 2014-02-03
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 2021-05-04
        • 1970-01-01
        相关资源
        最近更新 更多