以下代码无法在Chrome浏览器中唤醒

问题描述 投票:0回答:1

我创建了一个可重用的函数,它单击特定行的复选框并返回该行的文本。

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();”上引发异常我不明白为什么它这么怪异。需要帮忙。预先感谢。

java selenium serenity-bdd serenity-js
1个回答
1
投票

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.