`

关于selenium的等待时间的问题

阅读更多

 

 我们一般自动化的时候等待时间和超时可能会成为case挂掉的罪魁祸首,那么下面这两种等待设置可以解决这些问题:

Wait commands in WebDriver

Listing out the different WebDriver Wait statements that can be useful for an effective scripting and can avoid using the Thread.sleep() comamnds

After few searches and digging into the WebDriver Java doc, I managed to design a mindmap of the different WebDriver commands available

  

WebDriver.manage().timeouts()

 

implicitlyWait

 

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));




The ImplicitWait will tell the webDriver to poll the DOM for a certain duration when trying to find the element, this will be useful when certain elements on the webpage will not be available immediately and needs some time to load.
By default it ill take the value to 0, for the life of the WebDriver object instance through out the test script.

 

pageLoadTimeout//这个可以修改HTTP的等待时间哦

 

driver.manage().timeouts().pageLoadTimeout(100, SECONDS);


Sets the amount of time to wait for a page load to complete before throwing an error. If the timeout is negative, page loads can be indefinite.

setScriptTimeout

 

driver.manage().timeouts().setScriptTimeout(100,SECONDS);


Sets the amount of time to wait for an asynchronous script to finish execution before throwing an error. If the timeout is negative, then the script will be allowed to run indefinitely.


Support.ui

 

FluentWait

 

// Waiting 30 seconds for an element to be present on the page, checking
   // for its presence once every 5 seconds.
   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring(NoSuchElementException.class);

   WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
     public WebElement apply(WebDriver driver) {
       return driver.findElement(By.id("foo"));
     }
   });


Each FluentWait instance defines the maximum amount of time to wait for a condition, as well as the frequency with which to check the condition. Furthermore, the user may configure the wait to ignore specific types of exceptions whilst waiting, such as NoSuchElementExceptions when searching for an element on the page.

ExpectedConditions(until这种会导致debug时产生异常等待,等我研究研究看怎么解决 嘿嘿)

 

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


Models a condition that might reasonably be expected to eventually evaluate to something that is neither null nor false.
Examples : Would include determining if a web page has loaded or that an element is visible.
Note that it is expected that ExpectedConditions are idempotent. They will be called in a loop by the WebDriverWait and any modification of the state of the application under test may have unexpected side-effects.


WebDriverWait will be used as we used in the Expected conditions code snippet as above.


sleeper is something same as the Thread.sleep() method, but this with an Abstraction around the thread.sleep() for better testability (有的时候sleep会用起来更方便,但是应该有它不优化的一面 等我研究

分享到:
评论

相关推荐

    Selenium

    `selenium.waitForPageToLoad()` 用于等待页面加载完成;最后使用 `assertEquals()` 方法验证页面标题是否符合预期。 #### 五、总结 Selenium 是一个强大且灵活的自动化测试框架,能够极大地提高测试效率。无论是...

    selenium-Waits-等待.pdf

    隐式等待(Implicit Waits)设置一个全局等待时间,在这个时间范围内,Selenium WebDriver会自动等待指定的时间,直到元素出现在DOM中。如果在指定时间范围内找到了元素,则继续执行后续的测试步骤;如果超过时间仍...

    Selenium-Python中文手册

    - **等待**: `WebDriverWait`类允许设置超时时间等待特定条件满足,如元素出现或消失。 - **元素交互**: `click()`、`submit()`等方法模拟用户交互行为。 - **CSS选择器与XPath**: 使用`find_elements_by_css_...

    selenium.jar selenium资源包

    **等待策略**:在自动化测试中,经常需要处理页面加载时间。Selenium 提供了显式等待和隐式等待两种方式,确保元素在执行操作前已经加载完成。 **浏览器支持**:Selenium 支持多种主流浏览器,如Chrome、Firefox、...

    selenium wait

    Selenium 等待机制是 Selenium 自动化测试中一个非常重要的概念,它可以帮助我们在自动化测试中更好地处理页面加载和元素的出现问题。在 Selenium 中,有两种等待机制:显式等待(Explicit Wait)和隐式等待...

    selenium2.53 jar包

    隐式等待则是在整个会话中设置一个全局等待时间,如果找不到元素,会持续尝试直到达到设置的时间。 5. **断言与验证**: Selenium 提供了断言和验证功能,用于检查测试结果是否符合预期。例如,可以使用`...

    selenium自动化测试 java实例

    `WebDriverWait` 类提供了一种优雅的等待方式,可以指定等待时间以及等待条件。 **三、实例详解** 在"**selenium java实例**"中,可能包含以下步骤: 1. **引入依赖**: 首先,我们需要在项目中引入Selenium的Java...

    Selenium各种案例

    - **隐式等待**:设置全局的`implicitly_wait`,等待指定时间直到元素出现。 3. **页面对象模式** - 这是一种最佳实践,将页面元素和相关操作封装成独立的对象,提高代码的可读性和可维护性。 4. **框架集成** ...

    selenium库文件

    5. **等待**:由于网页加载时间差异,有时需要使用 `WebDriverWait` 进行智能等待,确保元素出现后再进行操作,避免因页面未完全加载导致的错误。 6. **异常处理**:在编写测试脚本时,应该对可能出现的异常进行...

    selenium-java-3.11.0.zip

    同时,Selenium支持等待机制,如隐式等待和显式等待,帮助解决元素加载时间不一致的问题。 为了更好地利用Selenium,你需要熟悉Java编程语言以及HTML和CSS等Web基础知识。同时,理解Selenium的API文档和社区资源...

    Python selenium 三种等待方式详解(必会)

    **定义:** 隐性等待是一种全局性的等待方式,通过`driver.implicitly_wait()`设置一个默认的最长等待时间,一旦设置,适用于整个`WebDriver`对象的生命周期。 **代码示例:** ```python # -*-coding:utf-8-*- ...

    selenium-2.53.0

    隐式等待则是在整个测试会话期间,设置一个默认的等待时间,如果找不到元素,它会持续尝试这个时间。 6. **异常处理**:在编写测试脚本时,Selenium 提供了异常处理机制,如 `NoSuchElementException` 表示找不到...

    selenium相关学习资料

    这可能涉及到元素的等待策略,如显式等待和隐式等待,以解决网页加载时间不确定导致的测试失败问题。此外,你还会接触到测试框架的搭建,如使用Page Object模式来提高代码的可维护性和可复用性,以及如何利用TestNG...

    解读Python selenium的等待方式.pdf

    如果在整个等待时间内元素仍未出现,Selenium会继续执行后续操作。这种方式的好处在于,一旦页面元素加载完成,即便整个页面还未完全加载,脚本也能继续执行。然而,它可能过于保守,因为即使部分元素已经加载,如果...

    selenium-2 python安装包

    4. **等待机制**:为了解决网页加载延迟问题,Selenium提供了`implicitly_wait`和`explicit_wait`等方法,用于设置等待时间或等待特定条件满足。 5. **断言和异常处理**:在编写测试脚本时,可以使用Selenium提供的...

    Selenium自动化测试框架详细介绍ppt及示例脚本.rar

    1. **显式等待(Explicit Wait)**:这是一种程序控制的等待,设置一个最长等待时间,直到特定条件满足或达到最大等待时间。显式等待是基于WebDriverWait对象实现的,可以精确地等待某个元素出现、消失或可点击。 2...

    selenium示例

    **Selenium 概述** Selenium 是一个广泛用于 Web 应用程序自动化测试的开源...在实践中,不断探索和学习 Selenium 的高级特性,如元素定位策略、等待机制、数据驱动测试等,将帮助你更好地应对复杂的自动化测试场景。

    Selenium2 api文档

    - 隐式等待:设置一个全局的等待时间,如果在该时间内元素没有出现,Selenium会继续尝试。 - 显式等待:通过WebDriverWait对象,指定等待某个条件满足后再进行下一步操作,如等待元素可见或可点击。 **6. 自定义...

Global site tag (gtag.js) - Google Analytics