
1、前言
在Python的网络自动化测试领域,Selenium曾是当之无愧的明星工具,以模拟浏览器操作闻名,广泛应用于UI自动化测试场景。它通过驱动浏览器模拟真实用户操作,能精准测试网页功能的交互逻辑,在验证网页元素可见性、点击事件响应等方面表现出色。但随着技术演进,面对大规模自动化测试任务时,Selenium启动浏览器带来的资源消耗和执行效率问题逐渐凸显。
此时,nodriver工具包凭借独特优势崭露头角。这款无需浏览器驱动即可实现高效网络交互的工具包,为自动化测试带来了全新思路。nodriver无需加载整个浏览器环境,以轻量、快速的特性,能够直接模拟HTTP/HTTPS请求,极大提升测试效率,减少资源占用,提供了更灵活、高效的自动化测试解决方案。
2、简介
nodriver通过相对简洁的界面,提供了更高级别的网页抓取和浏览器自动化功能。它是Python包Undetected-Chromedriver的官方继任者。无需再使用webdriver,也无需再使用selenium。
直接通信能更好地抵御Web应用防火墙(WAF),同时性能也能得到极大提升。与undetected-chromedriver不同,该模块是完全异步的。
nodriver与其他知名包的不同之处在于,它经过优化,能够避开大多数反机器人解决方案的检测。
另一个重点是易用性和快速原型开发,因此很多功能都能“即开即用”,大多数方法参数都设有最佳实践默认值。只需1到2行代码,就能启动运行,并默认提供最佳实践配置。它会在之后清理创建的文件(配置文件)。
已知可兼容以下浏览器:Chromium、Chrome、Edge、Brave
功能特性:
安装:
pip install undetected-chromedriver
pip install nodriver
Github地址:
https://github.com/UltrafunkAmsterdam/nodriver
3、快速上手
1、简单示例:
import nodriver as uc
async def main():
browser = await uc.start()
page = await browser.get('https://www.nowsecure.nl')
# ... 更多代码 ...
if __name__ == '__main__':
uc.loop().run_until_complete(main())2、完整示例:
import nodriver
asyncdef main():
browser = await nodriver.start()
page = await browser.get('https://www.nowsecure.nl')
await page.save_screenshot()
await page.get_content()
await page.scroll_down(150)
elems = await page.select_all('*[src]')
for elem in elems:
await elem.flash()
page2 = await browser.get('https://baidu.com', new_tab=True)
page3 = await browser.get('https://ultrafunkamsterdam.github.io/nodriver/index', new_window=True)
for p in (page, page2, page3):
await p.bring_to_front()
await p.scroll_down(200)
await p
await p.reload()
if p != page3:
await p.close()
if __name__ == '__main__':
nodriver.loop().run_until_complete(main())本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!