在 Java Seleneium-WebDriver 中,您可能会遇到应用程序需要时间来加载其内容的情况用户界面,导致元素定位失败。为了解决这个问题,您有两个等待选项:隐式等待和显式等待。
隐式等待:
如代码片段中所示,您将隐式等待设置为 2秒:
<code class="java">driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);</code>
这意味着驱动程序将在引发错误之前等待最多 2 秒以使元素变得可用。
显式等待:
显式等待需要在驱动程序继续之前满足特定条件。 WebDriverWait.until 方法可用于此目的:
<code class="java">WebDriverWait wait = new WebDriverWait(driver, 10); WebElement textbox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("textbox")));</code>
这里,驱动程序将等待最多 10 秒,让 ID 为“textbox”的元素变得可见,然后再继续。
哪个更好?
隐式等待和显式等待之间的选择取决于情况:
建议:
对于像您这样的情况,不能保证在特定时间范围内元素存在,使用显式等待,特别是流畅的等待,例如推荐使用答案中提供的。
<code class="java">public WebElement fluentWait(final By locator) { // Fluent wait implementation provided in the answer... } WebElement textbox = fluentWait(By.id("textbox"));</code>
流畅的等待允许您自定义超时和轮询间隔,提供更大的灵活性并防止不必要的延迟。
以上是Selenium WebDriver 中的隐式等待与显式等待:您应该选择哪一个?的详细内容。更多信息请关注PHP中文网其他相关文章!