3 回答
TA贡献1810条经验 获得超5个赞
我不喜欢这个
/tbody/tr/td[18]
节,因为它可能会更改最好将您的国家/地区名称条件放入 XPath 而不是通过WebElements进行迭代
建议的 XPath 表达式:
//table/tr/td[count(//table/tr/th[.='Put your desired column name here']/preceding-sibling::th) + 1]/*[text()='Uganda' or text()='Dadaab']
更多信息:
XPath 教程
XPath 轴
XPath 运算符和函数
另请注意,使用HtmlElements框架的Table类可以更轻松地处理HTML 表格。
TA贡献1772条经验 获得超5个赞
点击部分的逻辑存在问题:
if 检查单元格文本是否等于“Uganda”和“Dadaab”,它总是false. 您需要使用或||
如果找到匹配项,Columns_row.get(0)则单击第一行中的复选框,而不是带有文本的复选框
for (WebElement celtext : Columns_row) {
if (celtext.getText().contains("Uganda") || celtext.getText().contains("Dadaab")) {
celtext.click();
count++;
}
}
TA贡献2012条经验 获得超12个赞
您可以尝试在 xpath 中使用条件来获取列行。这样,如果您的列行有一个带有输入标签的兄弟,理想情况下应该是一个复选框,那么您可以尝试下面的代码
WebElement column = driver.findElement(By.xpath("//table[@id='gridBodyTable']/./td[(contains(text,'Uganda')) or (contains(text,'Dadab'))]"))
List<WebElement> checkboxes = column.findElements(By.xpath("./input"))
添加回答
举报