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()

 

原文地址:https://www.cnblogs.com/yronl/p/14450859.html