【发布时间】:2019-01-14 21:30:08
【问题描述】:
我遇到了一种情况,我需要等到元素消失(在 Firefox 中)。所以我尝试了不同的选项,但没有任何效果,所以尝试使用
new WebDriverWait(Drivers._driverInstance, new TimeSpan(0, 0, 2)).Until(ExpectedConditions.InvisibilityOfElementLocated(locator));
这可行,但运行测试用例需要 26 秒。当我评论那句话时,花了一半的时间。为什么这种特殊方法需要更多时间。虽然我只提到了 2 秒,但它正在等待近 10 秒。为什么要这样做?有没有更快的方法等到元素消失。
谢谢。
【问题讨论】:
-
在此之前代码中是否有隐式等待?
-
@Grasshopper 是的。
-
删除它并尝试。隐式和显式的混合可能会导致这种行为。
-
@Knu8 成功了。谢谢。
-
@Sudeepthi 隐式等待设置一次并在驱动程序实例的整个生命周期中持续存在。恕我直言,最好不要使用隐式等待,而是在需要时使用显式等待 (
WebDriverWait)。除非您的页面非常动态,否则您应该能够通过使用WebDriverWait来等待页面加载特定元素。加载该元素后,您就知道页面已加载,因此您可以抓取页面上的任何内容。如果您的操作触发了页面更改,请再次等待,然后继续。
标签: c# selenium selenium-webdriver wait