Selenium 从网格中获取行

问题描述

我是 Selenium/Katalon 的新手,我的脚本有问题。我指定的表格元素出现“无法定位元素”。

我不确定我是否引用了错误的 xpath/id,任何帮助都会很棒。

脚本:


WebDriver driver = DriverFactory.getWebDriver()

WebUI.waitForElementClickable(findTestObject('input'),0)
//Locate EE ID
WebElement Table = driver.findElement(By.id("ctl00"))

List<WebElement> Rows = Table.findElements(By.className("Row"))

println('No. of rows: ' + Rows.size())

table: for (int i = 0; i < Rows.size(); i++) {
    List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))

    for (int j = 0; j < Cols.size(); j++) {
        if (Cols.get(j).getText().equalsIgnoreCase(ExpectedValue)) {
            Cols.get(4).findElement(By.xpath('//*[@id="ctl00')).click()

            break
        }
    }
}

解决方法

正如我在评论中提到的,这个问题可以改进,我敦促您仍然熟悉正确的格式。 您也没有真正提及您正在查找的元素,因此读者必须从您的代码中猜测它,这可能会产生误导。

通过简要查看代码和屏幕截图,我猜测您的问题是 XPath 表达式中的单斜杠 / 仅匹配直接子项。 因此,//*[@id="something"]/td 只会匹配直接位于元素内部的 td 与匹配的 id 属性,即 div 外部的 table

试一试

//*[@id="something"]//td

带有双斜线 // 或类似的东西

//*[@id="something"]/table/tbody/tr/td