Pet*_*zov 3 java selenium selenium-webdriver
我有 Angular SPA 应用程序,它显示登录通知消息。我在 Java 中使用 Selenium Web 驱动程序:
Thread.sleep(1500);
WebElement element = failedLoginWebElement.findElement(By.xpath("//*[@id='toast-container']/div/div"));
Run Code Online (Sandbox Code Playgroud)
由于消息延迟,代码有时会失败。我如何实现一个侦听器,它会等待消息出现(例如 10 秒)?
小智 6
WaitsSelenium 中的测试用例是执行测试用例的基本代码片段之一。它运行在称为脚本的特定命令上,这些命令使页面加载。
隐式等待是 Selenium 中的无条件等待命令。由于它是无条件的,因此它适用于网页上的所有 Web 元素。
这可以通过三个函数应用隐式等待:
下面将重点介绍implicitlyWaits()。
顾名思义,
pageLoadTimeout()命令等待页面完全加载指定的秒数。该setScriptTimeout()命令等待网页的异步部分完成加载指定的秒数。
在 中implicitlyWait(),WebDriver 将在尝试查找任何元素时轮询 DOM 以获取某些指定的时间单位。如果较早找到该元素,则测试将在该点执行,否则 WebDriver 将等待指定的持续时间。
前任:
import java.util.concurrent.TimeUnit;
Run Code Online (Sandbox Code Playgroud)
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.get("https://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"))
Run Code Online (Sandbox Code Playgroud)
显式等待是 Selenium 中的一种条件等待策略,换句话说,您将一直等到指定的条件变为真或持续时间已过。
显式等待提供了以下使用条件:
两种类型的显式等待命令:
WebDriverWait指定WebDriver需要等待的条件和时间。实际上,WebDriverWait 和显式等待是同义词,因为它们的定义和用法完美匹配。
前任:
WebElement firstResult = new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//a/h3")));
Run Code Online (Sandbox Code Playgroud)
流畅等待类似于 Selenium 中的显式等待,但多了一个频率参数(也称为轮询时间)。频率数字告诉 WebDriver 定期检查元素并等待“Duration.ofSeconds”的最大值。
前任:
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(Duration.ofSeconds(30))
.pollingEvery(Duration.ofSeconds(5))
.ignoring(NoSuchElementException.class);
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,允许的最大等待时间指定为 30 秒 (Duration.ofSeconds(30)),轮询时间为 5 秒 (pollingEvery(Duration.ofSeconds(5)))。通过这种安排,WebDriver 将每 5 秒检查一次元素,最长检查时间为 30 秒。
| 归档时间: |
|
| 查看次数: |
762 次 |
| 最近记录: |