sni*_*ikt 2 java selenium page-load-time webdriverwait implicitwait
我目前有以下设置,但我不确定我的等待(隐式和 pageLoadTimeout)是否有效。这是正确的实现吗?通过将它放在@Before("@setup") 中,它是否适用于每个场景或步骤定义运行?每次我打电话给@Given、@When.. 等时,司机会相应地等待吗?
@Before("@setup")
public void setUp() {
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
}
Run Code Online (Sandbox Code Playgroud)
为什么需要给下面的wait分配一个WebElement,WebElement元素接收什么?这是正确的实现吗?——
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));
boolean status = element.isDisplayed();
Run Code Online (Sandbox Code Playgroud)
implicitlyWait()是告诉WebDriver实例,即驱动程序在尝试查找一个或多个元素(如果它们不能立即可用)时轮询HTML DOM一段时间。默认等待配置设置为0。一旦设置,隐式等待就设置为WebDriver对象实例的生命周期。
您的代码试用非常完美,如下所示:
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
在这里您将找到在 Selenium中使用隐式等待中的详细讨论
pageLoadTimeout() 设置时间跨度以在引发错误之前等待页面加载完成。
您的代码试用非常完美,如下所示:
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
在这里,您可以在 Selenium中的pageLoadTimeout 中找到详细讨论不起作用
注意:尽量避免配置
pageLoadTimeout(),除非测试规范明确提到相同的内容。
现代浏览器使用JavaScript、AJAX和React Native,其中网页中的元素是动态加载的。因此,在继续执行下一行代码之前等待特定条件得到满足,显式等待即WebDriverWait是继续进行的方式。
注意:根据显式和隐式等待的官方文档,不要混合隐式和显式等待。这样做可能会导致不可预测的等待时间。
您的代码试验非常适合等待元素的可见性,如下所示:
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));
Run Code Online (Sandbox Code Playgroud)
在这里你可以找到用显式等待替换隐式等待(selenium webdriver & java)的详细讨论
为什么需要将 WebElement 分配给以下等待:WebDriverWait与ExpectedConditions结合不仅返回WebElement,而且根据ExpectedConditions也可以返回void、Boolean、List。
WebElement 元素接收什么?:根据您使用ExpectedConditions as 的代码块,一旦该元素出现在网页的DOM 树上并且可见visibilityOfElementLocated(),就会返回WebElement。可见性意味着元素不仅被显示而且具有大于0的高度和宽度。
这是正确的实现吗?:您的实现接近完美,但最后一行代码 ieboolean status = element.isDisplayed();是多余的,因为visibilityOfElementLocated()一旦元素可见就返回元素(即元素不仅显示,而且高度和宽度都大于0)。
| 归档时间: |
|
| 查看次数: |
3421 次 |
| 最近记录: |