隐式、显式和 fluentwait 之间的差异

Mad*_*uri 5 selenium synchronization

之间有什么具体区别implicitwait()explicitwait()fluentwait()?你能用例子解释一下吗?

Sai*_*fur 0

显式等待是您定义的代码,用于等待特定条件发生,然后再继续处理代码。最坏的情况是Thread.sleep(),它将条件设置为要等待的确切时间段。提供了一些方便的方法,可以帮助您编写只等待所需时间的代码。WebDriverWait结合使用ExpectedCondition是实现此目的的一种方法。示例如下:

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
Run Code Online (Sandbox Code Playgroud)

然而,根据语言的实现,略有不同。有关界面的更多信息,请参阅此处ExpectedCondition

隐式等待是告诉在尝试查找一个或多个元素(如果它们不立即可用)时WebDriver轮询DOM一定时间。默认设置为 0。设置后,隐式等待将在WebDriver对象实例的生命周期内设置。下面是隐式等待的实现:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

这两个定义都来自seleniumhq和最完美的定义。

Fluent Wait只是等待元素的另一种机制。它提供了一些不同的机制来轮询DOM以查找元素。它提供的最伟大的功能之一是等待忽略某些元素exceptions。看到这个