请帮助我理解以下三种等待方法与程序中有效使用之间的区别,
的Thread.sleep(5000);
driver.manage()。timeouts()。隐式等待(5,TimeUnit.SECONDS);
ExplicitWait();
由于
答案 0 :(得分:1)
阻塞线程实际上是java用来控制多线程应用程序的块。
显式等待是您定义的代码,用于在进一步执行代码之前等待某个条件发生。最糟糕的情况是Thread.sleep(),它将条件设置为等待的确切时间段。提供了一些便捷方法,可帮助您编写仅在需要时等待的代码。 WebDriverWait与ExpectedCondition相结合是一种可以实现的方法。
隐式等待是告诉WebDriver在尝试查找一个或多个元素(如果它们不是立即可用)时轮询DOM一段时间。默认设置为0.设置后,将为WebDriver对象实例的生命周期设置隐式等待。
您不应该使用Java的thread.sleep作为selenium的替代品,因为您可能会根据您在应用程序中执行的操作创建多线程错误。 (例如死锁,或竞争条件)