问题描述
我是 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