我正在研究 Java Selenium-WebDriver。我加了
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
和
WebElement textbox = driver.findElement(By.id("textbox"));
因为我的应用程序需要几秒钟来加载用户界面。所以我设置了2秒implicitwait。但我 无法找到元素文本框
然后我添加 Thread.sleep(2000);
现在它工作正常。哪种方法更好?
原文由 Gnik 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,有两种类型的等待:显式等待和隐式等待。明确等待的想法是
隐式等待的概念是
您可以在 此处 了解细节差异。
在这种情况下,我更喜欢使用显式等待(特别是
fluentWait
):fluentWait
函数返回您找到的网络元素。来自fluentWait
的文档 : Wait 接口的实现可能会动态配置其超时和轮询间隔。每个 FluentWait 实例定义等待条件的最长时间,以及检查条件的频率。此外,用户可以配置等待以在等待时忽略特定类型的异常,例如在页面上搜索元素时出现 NoSuchElementExceptions。 您可以 在此处 获得详细信息fluentWait
在您的情况下的用法如下:恕我直言,这种方法更好,因为您不知道确切的等待时间,并且在轮询间隔中,您可以设置任意时间值来验证元素的存在。问候。