我们正在处理遗留代码,并且存在不稳定测试的问题。
我想增加默认超时,但 driver.findElement 在很多地方都使用 - 覆盖每个调用以使用 WebDriverWait 将是一项艰巨的任务。
我找到了使用隐式等待的建议,这看起来很理想,因为它只需要设置一次:
getDriver().manage().timeouts().implicitlyWait(5000, TimeUnit.MILLISECONDS);
我将此添加到初始化代码块中。不幸的是,当我运行一个测试用例(50 个测试)时,我的性能炸弹 - 从大约 30 秒增加到 600 秒。
我不明白为什么性能变得如此糟糕 - 我认为如果元素不存在(测试通过)只会花费最长时间。我认为这个电话会轮询条件。但我也看不到在哪里设置轮询间隔......它在文档中确实提到应该明智地使用它,但这完全不可用!
我们是否在使用implicitlyWait() 的正确轨道上?还有其他方法可以加强我们的测试吗?
更新在调查中,它似乎正在使用implicitlyWait() 和driver.getElements() 减慢我们的速度 - 如果我取消隐式等待然后在调用后立即重新应用它,那么测试运行得更快。我们在 400 多个地方使用 getElements 插件(!) - 关于如何进行的任何建议?