这很令人沮丧。无论我看到哪里,人们都不断告诉我使用显式、隐式和流畅的等待。这些等待使你根据元素暂停。但是,光顾我们并删除工具和选项不是一个好主意。在我目前特定的泡菜中,我有一个按钮,如果有人点击它太快,它就会消失。但是,它也设计为现在立即显示。所以你必须等到它出现,然后等待足够的时间过去,然后才点击按钮。有了这些建议,我就不可能了。在这种情况下,必须使用静态暂停或睡眠。出于某种原因,我什至无法使用线程睡眠,因为它似乎已在 Java 8 本身或其他东西中被弃用。
是什么让你认为java.lang.Thread会被弃用?
因此,即使在Java 11文档中,它也没有被弃用。
所以如果你想使用它,请随意。
隐式等待:
driver.manage().timeouts().implicitlyWait(TimeOut, TimeUnit.SECONDS);
显式等待:
WebDriverWait wait = new WebDriverWait(WebDriverRefrence,TimeOut);
可能通过术语静态等待和静态暂停,你的意思是Thread.sleep()
这在很多方面仍然有用。
但是,虽然通过Selenium执行测试,但诱导睡眠并不是解决此问题的优雅解决方案,因为诱导Thread.sleep(1000);
会降低整体测试执行性能。您可以在Selenium中找到详细的讨论,在进入下一页之前需要睡眠。
如果您需要诱导等待,隐式等待是一个很好的开始方式。您可以在使用隐式等待在硒中找到详细的讨论。然而,由于当前的Web应用程序是通过JavaScript,Angular,ReactJS等构建的,显式等待将是前进的方向。
因此,您可以继续向显式等待过渡。您可以在将隐式等待替换为显式等待(selenium webdriver & java)中找到详细的讨论。
在这一点上,实现Fluent Wait将容易得多,您可以在Implicit vs Explicit vs Fluent Wait中找到详细的讨论。