java - 根据其内容访问基于 td 元素的表中的行

标签 java selenium

我正在编写 selenium 代码来检查与特定日期匹配的 td 元素的内容。

这是我的代码:

public static void main(String[] args) {
    System.setProperty("webdriver.chrome.driver",
            "C://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    String baseUrl = "http://espn.go.com/nba";
    String endPoint = "/team/schedule/_/name/chi/year/2015/chicago-bulls";

    // launch browser and direct it to the Base URL
    driver.get(baseUrl + endPoint);

    WebElement table_element = driver.findElement(By.cssSelector(".mod-container.mod-table.mod-no-header-footer"));
    List<WebElement> tr_collection = table_element.findElements(By.xpath("div/table/tbody/tr"));
    for (WebElement trElement : tr_collection) {
        List<WebElement> td_collection = trElement.findElements(By.xpath("td"));
        if (td_collection.get(0).getText().equals("Wed, Oct 29")) {
            WebElement tdElement = td_collection.get(2);
            System.out.println(tdElement.getText().split("\\n")[1]);
            break;
        }
    }
    // close browser
    driver.close();
}

在这里,我获取 table 的所有行,然后检查第一列是否具有值“Wed, Oct 29”,如果匹配,则获取第三列值。

有没有办法直接查找值与“Wed, Oct 29”匹配的 td 元素?或者简化的逻辑?

最佳答案

要获取第三个元素,我想是结果列,您可以使用此 Xpath:

.//td[contains(text(),'Wed, Oct 29')]/following-sibling::td[2]

enter image description here

条件是td中的文本,用于获取他的兄弟,在本例中是第二个兄弟或第三列。

通过此 Xpaht,您可以获得 WebElement,之后您可以使用 getText 函数。该函数应该返回节点文本和所有子文本。

关于java - 根据其内容访问基于 td 元素的表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48249330/

相关文章:

java - 如何在java selenium中单击动态<li>元素?

java - 为什么从 super 接口(interface)到子接口(interface)的转换有效?

java - 如何使用 URIBuilder 构造带参数的 URI?

java - 无法在 iFrame 中找到元素

java - Selenium Java - 此版本的 ChromeDriver 仅支持 Chrome 版本 81

python - Selenium webdriver.Firefox() 永远不会返回

python - 在 Ubuntu 上使用 Python Selenium 上传文件

java - Spring Boot 内置 Tomcat 服务器 - 相对于普通 Spring 应用程序有什么优势

java - 如何使用 while 循环使用从结果集中获取的值来更新另一个操作?

java - 为非 .class 文件创建 jar 文件