我正在使用selenium 2.46(firefox驱动程序)来开发一个应用程序。我的代码中有很多element.click()。有时,元素不可见或不可点击使应用程序抛出异常异常。
要解决该问题,我对每个需要点击的单个元素使用WebdriverWait(driver,10).until(...)。
我的问题是还有其他更好的方法或设计模式可以帮助我最好地解决问题。
或者至少我不必使用WebdriverWait,因为每个元素都需要click()。
答案 0 :(得分:2)
你无法避免WebDriverWait
。如果您发送webdriver click命令,webdriver将盲目地假设"元素是可点击的"。您需要指示webdriver等待,因为您的元素是特殊的,需要一些同步才能点击它。我认为你不需要为其他所有元素做这件事。您可以合并ExpectedConditions,以便您可以保持代码段的可管理性和小型化。等等,
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.elementToBeClickable(By.id("foo"))).click();
答案 1 :(得分:1)
除了点击之外你可以尝试的另一个选项是在相应的元素上点击输入,因为你可以参考该元素的ID。
driver.findElement(By.id("elementid")).sendKeys(Keys.ENTER);
答案 2 :(得分:1)
使用隐式等待而不是显式等待并给出预期条件,直到元素在屏幕上不可见。
希望这会对你有所帮助