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

时间:2018-01-14 11:59:18

标签: 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的所有行,然后检查第一列是否有值&#34;星期三,10月29日和#34;,如果匹配则获取第3列值。

有没有办法直接查找其值匹配&#34;星期三,10月29日和#34;的td元素?或者这个简化的逻辑?

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here

条件是td中的文本以获取他的兄弟,在这种情况下是第二个兄弟或第3列。

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