python自动化测试selenium核心技术3种等待方式详解

这篇文章主要为大家介绍了python自动化测试selenium的核心技术三种等待方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

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

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

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

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

示例脚本:

|----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from selenium ``import webdriver from 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"``) ``# 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整个周期都起作用,一般在最开始设置一次就可以了。不要当做固定等待,哪里都设置隐式等待。

示例脚本:

|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | from selenium ``import webdriver from 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() |

复制代码
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

3 显示等待(WebDriverWait)

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

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

WebDriverWait参数说明:

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

两种方法:until和util_not

场景:

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

示例脚本:

|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from selenium ``import webdriver from selenium.webdriver.support.wait ``import WebDriverWait from selenium.webdriver.support ``import expected_conditions as ec class 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() |

三种等待完整示例脚本:

|----------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from selenium ``import webdriver from time ``import sleep from selenium.webdriver.support.wait ``import WebDriverWait from selenium.webdriver.support ``import expected_conditions as ec class 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:

|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from selenium ``import webdriver from time ``import sleep class 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() |

【解决方法】:脚本修改

|----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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 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() |

以:selenium自动化测试学习总结!

以上就是python自动化测试selenium核心技术三种等待方式详解的详细内容,更多关于selenium三种等待方式的资料请关注小编相关文章!end如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

相关推荐
第九序言T3 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路3 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003963 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_3 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
quantdash_cc5 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl5 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
云和数据.ChenGuang5 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真6 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
wflynn7 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github
2601_967980117 小时前
python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)
python·scapy·pcap·协议分析·网络数据包