首页 > 解决方案 > 如何在tr td的表中定位元素

问题描述

HTML 代码如下:

<div id = ...>
  <table ...>
    <tbody>
      <tr>
        <td>
          <table ...>
            <tr>
              <td>
                <a onclick="…" class="xl" href="#">1111111</a>

我需要找到值为 111111 的最后一个单元格/元素并单击它。

我试过这些Java:

driver.findElement(By.xpath("//tr/td/a[contains(text(),'111111')]")).click();
driver.findElement(By.cssSelector("a[href='#']")).click();

但它没有用。

任何想法?谢谢

标签: javahtmlselenium

解决方案


为什么不获取表体中所有行的文本集合。

WebElement container = Webdriver.findElement(By.xpath("/*xpath to <tbody> element here*/")).click();
List<WebElement> tableRows = container.findElement(By.tagName("tr"));
List<String> elementText = new ArrayList<>();
tableRows.foreach(x -> elementText.add(x.getText()));

然后搜索该字符串的最后一个索引

int indexOfLast = tableRows.lastIndexOf("1111111");
WebElement theLastElement = elementText.get(indexOfLast);

然后您可以获取最后一个元素并使用它来查找您正在寻找的标记元素。

WebElement myElement = theLastElement.findBy(tagName("a"));

推荐阅读