zoukankan      html  css  js  c++  java
  • selenium学习笔记09-三种等待方式及17种等待条件

    selenium三种等待方式

    time.sleep(固定等待)

    在开发自动化框架的过程中,最忌讳使用python自带模块time的sleep方式进行等待,虽然可以自定义等待时间,但当网络良好时,依旧按照预设定的时间继续等待,导致整个项目的自动化时间无限延长,不建议使用(注:脚本调试过程中,还是可以方便使用的)

    implicitly_wait(隐式等待)

    隐式等待实际是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步。这样的隐式等待会有个坑,JavaScript一般都是放在我们的body的最后进行加载,实际这是页面上的元素都已经加载完毕,我们确还在等待全部页面加载结束。

    隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。

    WebDriverWait(显示等待)

    WebDriverWait是selenium提供得到显示等待模块引入路径:

    from selenium.webdriver.support.wait import WebDriverWait

    代码如下:

    from selenium import webdriver
    from time import sleep
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    
    
    class TestCase(object):
        def __init__(self):
            self.driver = webdriver.Chrome()
            self.driver.get('http://www.baidu.com')
            # sleep(2)
    
        def test_sleep(self):
            self.driver.find_element_by_id('kw').send_keys('selenium')
            # sleep(2) # 线程阻塞 blocking wait
            self.driver.find_element_by_id('su').click()
            # sleep(3)
            self.driver.quit()
    
        def test_implicitly(self):
            self.driver.implicitly_wait(10)
            self.driver.find_element_by_id('kw').send_keys('selenium')
            # sleep(2) # 线程阻塞 blocking wait
            self.driver.find_element_by_id('su').click()
            # sleep(3)
            self.driver.quit()
    
        def test_wait(self):
            wait = WebDriverWait(self.driver,2)
            wait.until(EC.title_is('百度一下,你就知道'))
            self.driver.find_element_by_id('kw').send_keys('selenium')
            # sleep(2) # 线程阻塞 blocking wait
            self.driver.find_element_by_id('su').click()
            # sleep(3)
            self.driver.quit()
    
    if __name__ == '__main__':
        case = TestCase()
        # case.test_sleep()
        # case.test_implicitly()
        case.test_wait()

     

  • 相关阅读:
    JDBC的异常
    JDBC的事务
    JDBC的数据类型
    JDBC的结果集
    JDBC操作MySQL出现:This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, ...的问题解决
    JDBC的Statement对象
    JDBC连接数据库
    JDBC驱动类型
    JDBC实例代码
    java与javax的区别分析(转)
  • 原文地址:https://www.cnblogs.com/yronl/p/14450859.html
Copyright © 2011-2022 走看看