gpt4 book ai didi

java - 页面对象模型中的 WebDriver 显式等待

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:11 25 4
gpt4 key购买 nike

我们目前有一个使用页面对象模型的大型 selenium junit 项目。我们使用 @FindBy 注释来声明我们的 WebElements。现在当我们运行测试时,我们随机得到 NoSuchelementException,这意味着页面可能没有完成加载。我们不想使用隐式等待,因为那不会提供完整的解决方案(元素可能存在于 DOM 中但尚不可交互)。显式等待可能会解决此问题。但是,我们如何在这个页面模型架构中使用它而不必去掉 @FindBy 注解呢?以前可能有人问过这个问题,但我似乎还没有找到任何解决方案。

最佳答案

我看到有 4 种方法可以做到这一点。它们都不是有趣的,但是,随着您的进行,它们会变得更好(并且编程更复杂)

  1. 将您的选择器复制到显式等待中

  2. 输入您的 @FindByList<WebElement> 上并等待大小不为 0。

  3. 创建一个接受 WebElement 并调用 isDisplayed() 的函数(或其他一些非操作函数)直到它不抛出异常

  4. 您可以实现的最终解决方案是围绕 WebElement 使用装饰器模式。这意味着您需要创建自己的 FieldDecorator ,然后在初始化装饰器时使用该装饰器 WebElements .装饰的 webelement 将有一个 exists() 函数,它基本上是一个围绕 NoSuchElementExceptions 的 try/catch。 .

如果您对这些解决方案中的任何一个感到困惑,我可以为它们提供代码,但我认为学习如何做是一个很好的实践 WebElementWait和页面对象确实有效(通过实现您选择的解决方案),所以我现在不会发布它。

关于java - 页面对象模型中的 WebDriver 显式等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com