文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python自动化测试selenium核心技术的等待方式有哪些

2023-06-25 14:48

关注

小编给大家分享一下python自动化测试selenium核心技术的等待方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利执行。

selenium官网手册:Waits | Selenium

slenium自动化测试中,主要涉及三种等待方式:    

1 使用python自带模块time的sleep方式     

缺点:即使网络条件较好时,依旧按照预定固定时间等待,一般不建议使用,脚本调试可使用。

示例脚本:

from selenium import  webdriverfrom time import sleepclass TestWait(object):    driver = webdriver.Chrome()    driver.get(http://www.baidu.com)     def test_sleep(self):        self.driver.find_element_by_id("kw").send_keys("sleep test")        # sleep(2) #等待固定时间        self.driver.implicitly_wait(2)  # 隐式等待        self.driver.find_element_by_id("su").click()        self.driver.quit()if __name__ == '__main__':    wait=TestWait()    wait.test_sleep()

2 隐式等待(implicitly_wait)

隐式等待设置的时间是最长的时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步。

注意:隐式等待对driver整个周期都起作用,一般在最开始设置一次就可以了。不要当做固定等待,哪里都设置隐式等待。

示例脚本:

from selenium import  webdriverfrom time import sleep class TestWait(object):    driver = webdriver.Chrome()    driver.get(http://www.baidu.com)     def test_sleep(self):        self.driver.find_element_by_id("kw").send_keys("sleep test")        self.driver.implicitly_wait(2)  # 隐式等待        self.driver.find_element_by_id("su").click()        self.driver.quit()if __name__ == '__main__':    wait=TestWait()    wait.test_sleep()

3 显示等待(WebDriverWait)

显式等待允许等待条件的发生,所以非常适合在浏览器及其DOM和WebDriver脚本之间同步状态。

需要引入包:from selenium.webdriver.support.wait import WebDriverWait

WebDriverWait参数说明:

WebDriverWait(driver, timeout=3).until(some_condition)

python自动化测试selenium核心技术的等待方式有哪些

两种方法:until和util_not

python自动化测试selenium核心技术的等待方式有哪些

场景:

打开百度首页,等待页面出现:百度一下,你就知道,再执行输入搜索关键词,点击“百度一下”按钮。

示例脚本:

from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ecclass TestWait(object):    def setup(self):        self.driver = webdriver.Chrome()        self.driver.get(http://www.baidu.com)     def test_webdreiverwait(self):        webdreiverwaits =WebDriverWait(self.driver,2)        webdreiverwaits.until(ec.title_is("百度一下,你就知道"))        self.driver.find_element_by_id("kw").send_keys("test_webdreiverwait test")        self.driver.find_element_by_id("su").click()     def teardown(self):        self.driver.quit() if __name__ == '__main__':    wait=TestWait()    wait.test_webdreiverwait()

三种等待完整示例脚本:

from selenium import webdriverfrom time import sleepfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ecclass TestWait(object):    def setup(self):        self.driver = webdriver.Chrome()        self.driver.get("http://www.baidu.com")     def test_sleep(self):        self.driver.find_element_by_id("kw").send_keys("sleep test")        sleep(2) #等待固定时间     self.driver.find_element_by_id("su").click()      def test_implicitly(self):        self.driver.find_element_by_id("kw").send_keys("implicitly test")        self.driver.implicitly_wait(2)  # 隐式等待     self.driver.find_element_by_id("su").click()     def test_webdreiverwait(self):        webdreiverwaits =WebDriverWait(self.driver,2)        webdreiverwaits.until(ec.title_is("百度一下,你就知道"))        self.driver.find_element_by_id("kw").send_keys("test_webdreiverwait test")        self.driver.find_element_by_id("su").click()     def teardown(self):        self.driver.quit() if __name__ == '__main__':    wait=TestWait()    # wait.test_sleep()    # wait.test_implicitly()    wait.test_webdreiverwait()

【常见问题】:运行脚本报empty suite:

from selenium import  webdriverfrom time import sleepclass TestWait(object):    def __init__(self):    self.driver = webdriver.Chrome()    self.driver.get('http://www.baidu.com')     def test_sleep(self):        self.driver.find_element_by_id("kw").send_keys("sleep test")        # sleep(2) #等待固定时间        self.driver.implicitly_wait(2)  # 隐式等待        self.driver.find_element_by_id("su").click()        self.driver.quit()if __name__ == '__main__':    wait=TestWait()    wait.test_sleep()

python自动化测试selenium核心技术的等待方式有哪些

【解决方法】:脚本修改

from selenium import webdriverfrom time import sleepfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWait class TestCase(object):     def setup(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)      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)      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)    def teardown(self):        self.driver.quit() if __name__ == '__main__':    case = TestCase()    # case.test_sleep()    # case.test_implicitly()    case.test_wait()

看完了这篇文章,相信你对“python自动化测试selenium核心技术的等待方式有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯