我创建了一个可重用的函数,它单击特定行的复选框并返回该行的文本。
CheckBoxXpath-> private static final String XPATH_JOBRATECATEGORIES_CHECKBOX_LIST = "//kendo-grid-list//table/tbody/tr/td[1]/label";
RowXpath -> private static final String XPATH_JOBRATECATEGORIES_LIST = "//kendo-grid-list//table/tbody/tr/td[2]//div//div";
count-> 0 (I want to click only first row check box)
public String Select_CheckBox_Return_SelectedText(String CheckBoxXpath,String RowXpath, int Count) {
List<WebElementFacade> listOfCheckBox = findAll(By.xpath(CheckBoxXpath));
List<WebElementFacade> listOfrow = findAll(By.xpath(RowXpath));
if(listOfCheckBox.size()>Count) {
for (int i = 0; i <= Count; i++) {
listOfCheckBox.get(i).click();
String Actual=listOfrow.get(i).getText();
}
}else {
Assert.fail("Need to have more rows to fullfill the requirement");
return null;
}
return Actual;
}
这在Firefox浏览器上正常工作,但在Chrome浏览器上无效。在调试时,代码在->“ listOfCheckBox.get(i).click();”上引发异常我不明白为什么它这么怪异。需要帮忙。预先感谢。
Selenium的执行速度可能比网页的反应速度快。使用显式等待以确保该复选框不仅存在,而且可以单击:
WebDriverWait wait = new WebDriverWait (driver, 10);
// ...
for (int i = 0; i <= Count; i++) {
wait.Until(ExpectedConditions.elementIsClickable(listOfCheckbox.get(i));
listOfCheckBox.get(i).click()
String Actual=listOfrow.get(i).getText();
}