首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium,处理元素的最佳实践是不可点击的。

Selenium,处理元素的最佳实践是不可点击的。
EN

Stack Overflow用户
提问于 2015-07-31 05:13:10
回答 3查看 272关注 0票数 0

我正在使用selenium 2.46 (firefox驱动程序)开发一个应用程序。在我的代码中有很多element.click()。有时,这些元素不可见或不可单击,这会使应用程序抛出selenium异常。

为了解决这个问题,我使用了WebdriverWait(驱动程序,10).until(.)对于每个需要单击的元素。

我的问题是,还有其他更好的方法或设计模式可以帮助我最好地解决问题。

或者,至少对于每个需要单击()的元素,我不必使用WebdriverWait。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-31 14:59:13

您无法避免WebDriverWait。如果发送webdriver单击命令,webdriver将盲目地假定“元素是可单击的”。您需要指示webdriver等待,因为您的元素是特殊的,需要一些同步才能单击它。我不认为你需要为所有其他元素这么做。您可以合并ExpectedConditions,这样您就可以将代码片段保持在可管理的小范围内。所以就像,

代码语言:javascript
运行
复制
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.elementToBeClickable(By.id("foo"))).click();
票数 2
EN

Stack Overflow用户

发布于 2015-07-31 05:20:57

除了单击之外,您可以尝试的另一个选项是按下相应元素的enter,因为您可以引用该元素的ID。

driver.findElement(By.id("elementid")).sendKeys(Keys.ENTER);

票数 1
EN

Stack Overflow用户

发布于 2015-07-31 05:33:36

使用隐式等待,而不是显式等待,并给出预期的条件,直到元素在屏幕上不可见。

有关更多信息,您可以查看http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#invisibilityOfElementLocated-org.openqa.selenium.By-

希望这能帮到你

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31738514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档