标签: implicitwait

Python & Selenium:driver.implicitly_wait() 和 time.sleep() 之间的区别

是的,我知道两者都习惯于等待某个指定的时间。

硒:

driver.implicitly_wait(10)
Run Code Online (Sandbox Code Playgroud)

Python:

import time
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?

python selenium sleep selenium-webdriver implicitwait

6
推荐指数
2
解决办法
1万
查看次数

用显式等待替换隐式等待(selenium webdriver & java)

如何用显式等待替换这种隐式等待?

驱动程序 = 新的 ChromeDriver(功能);

driver.manage().deleteAllCookies();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

这在 Before 方法中使用。我能够替换代码中的所有 Thread.sleep(),但我不确定对这个做了什么。

java selenium selenium-webdriver webdriverwait implicitwait

5
推荐指数
1
解决办法
3930
查看次数

Selenium findElements() 是否必须隐式等待返回 0 个元素?

我带着一个关于 Selenium 的问题来到这里。在我的测试中,我需要删除网络应用程序中的某些项目,然后我想验证项目列表是否为空。我知道这看起来微不足道,但我有一些小问题。这就是我想检查我的项目列表是否为空的方式:

Assert.assertEquals(page.getSearchResultList().size(), 0);
Run Code Online (Sandbox Code Playgroud)

简单且有效,但...由于隐式等待而缓慢。

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

事实上,当我删除项目时,thengetSearchResultList().size()是 0 并且 Selenium 总是等待 10 秒,然后 findElements() 返回 0 大小。

为了避免这 10 秒的等待,我有一个解决方法,可以在断言之前修改隐式等待,但我认为这不是一个好主意。

page.getDriver().manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
Assert.assertEquals(page.getSearchResultList().size(), 0);
Run Code Online (Sandbox Code Playgroud)

还有其他更好的解决方案吗?

请求更新 @KunduK

不使用 WebDriverWait 进行断言:

    Instant start = Instant.now();
    List<WebElement> resultSearchList = page.getDriver().findElements(By.cssSelector("[ng-repeat='searchResult in $ctrl.searchResults']"));
    Assert.assertEquals(resultSearchList.size(), 0);
    Instant stop = Instant.now();
    log.debug("Assert Took: " + Duration.between(start, stop).getSeconds() + " sec");
Run Code Online (Sandbox Code Playgroud)

输出:

10:49:59.081 [main] DEBUG impl.AssertNewEntityPage - Assert Took: 10 sec
Run Code Online (Sandbox Code Playgroud)

使用 WebDriverWait 进行断言

    Instant start = Instant.now();
    new WebDriverWait(page.getDriver(), 10).until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("[ng-repeat='searchResult in …
Run Code Online (Sandbox Code Playgroud)

java selenium webdriver webdriverwait implicitwait

5
推荐指数
1
解决办法
1714
查看次数

在selenium中使用隐式等待

我是初学者。我理解等待的基本作用,但我对互联网上不同的教程如何放置和解释它感到困惑。例如,在下面的代码中,它被放置在加载 URL 之前。那么,是否只是等待 URL 加载或查找元素或两者兼而有之?如果我在 try 块中使用隐式等待一次,它是否适用于我在代码中执行的每个元素搜索?

from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")
Run Code Online (Sandbox Code Playgroud)

selenium selenium-chromedriver selenium-webdriver geckodriver implicitwait

4
推荐指数
1
解决办法
2万
查看次数

如何通过 Selenium 正确配置隐式/显式等待和 pageLoadTimeout?

我目前有以下设置,但我不确定我的等待(隐式和 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)

java selenium page-load-time webdriverwait implicitwait

2
推荐指数
1
解决办法
3421
查看次数

隐式等待、显式等待、流畅等待

隐式、显式、流利等之间有什么区别?

如果我们在隐式等待中设置 10 秒,并且在 10 秒之前,则在 3 秒内只有元素被定位。

到时候会发生什么?它将等待 10 秒钟或继续进行。

selenium selenium-webdriver webdriverwait fluentwait implicitwait

1
推荐指数
1
解决办法
4081
查看次数