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"))
添加回答
舉報