Playwright\Selenium如何选择及示例

简介: Playwright和Selenium都是用于Web UI自动化测试的工具,但是它们有一些不同的特点和功能。Playwright是由微软开发的一个较新的框架,它使用websockt协议来操作浏览器内核,可以实时获取页面状态,也可以和浏览器双向沟通。Selenium是一个出现较早的工具,它使用http协议来自动化Web浏览器,允许开发人员编写与网页和元素交互的测试。

00953.png

Playwright和Selenium都是用于Web UI自动化测试的工具,但是它们有一些不同的特点和功能。

  • Playwright是由微软开发的一个较新的框架,它使用websockt协议来操作浏览器内核,可以实时获取页面状态,也可以和浏览器双向沟通。它支持多种语言(TypeScript、JavaScript、Python、.NET、Java),多种浏览器(Chromium、WebKit和Firefox),并且可以在Windows、Linux和Mac上运行。它不需要下载浏览器驱动,可以通过命令行安装浏览器,并且启动速度很快。它还提供了一些高级的功能,比如context环境隔离、headless无头模式、无痕模式、wait_for_load_state精准等待、多种内置定位器、元素状态智能判断、iframe对象操作、alert异步监听、文件上传下载处理、多窗口标签监听、事件监听、捕获ajax请求、mock功能、expect断言、录制视频、trace追踪、断点调试等。它还可以生成pytest用例,也可以进行接口测试。总之,Playwright是一个简单方便、功能强大、稳定性高的工具。
  • Selenium是一个出现较早的工具,它使用http协议来自动化Web浏览器,允许开发人员编写与网页和元素交互的测试。它支持更多的语言(C#,Java,Perl,PHP,Python 和Ruby),更多的浏览器(IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera,Edge等),并且也可以在Windows,Linux,Mac上运行。但是它需要下载对应版本的浏览器驱动,并且启动速度较慢。它没有提供像Playwright那样的高级功能,而是需要开发人员自己封装或者导入其他模块来实现。比如元素等待、点击元素等操作、定位报错、元素不在当前屏幕、iframe切换、alert处理、文件上传下载处理、多窗口标签切换、执行JavaScript等。它也没有提供录制视频、trace追踪、断点调试等功能。它只能获取当时的页面状态,不能实时监听或者模拟接口数据。总之,Selenium是一个灵活性高、用户群体大、学习资料多的工具。

根据以上的介绍,我们可以看出Playwright和Selenium各有优缺点。

  • Playwright的优点是简单方便、功能强大、稳定性高,缺点是相对新,用户群体少,学习资料少。
  • Selenium的优点是灵活性高、用户群体大、学习资料多,缺点是需要自己封装或者导入其他模块来实现一些功能,启动速度慢,稳定性差。

所以,在选择使用哪个工具的时候,需要根据自己的需求和情况来决定。如果你想要快速上手一个简单方便且功能强大的工具,那么Playwright可能更适合你。下面以python使用Playwright采集航班信息https://www.luckyair.net为示例:

# 使用playwright.chromiumfromplaywright.sync_apiimportsync_playwright# 设置亿牛云(动态转发隧道代理)爬虫代理加强版 代理IP的用户名和密码proxy_username="16IP"proxy_password="16YUN"withsync_playwright() asp:
# 启动chromium浏览器,并设置代理browser=p.chromium.launch(proxy={"server": f"http://{proxy_username}:{proxy_password}@your_proxy_ip:your_proxy_port"})
# 启动 Chromiumbrowser=p.chromium.launch()
# 设置亿牛云(动态转发隧道代理)爬虫代理加强版 代理IP的服务器context=browser.new_context(proxy={
"server": "http://www.16yun.cn:31000",
"username": proxy_username,
"password": proxy_password    })
# 创建一个新页面page=context.new_page()
# 访问网站 https://www.luckyair.netpage.goto("https://www.luckyair.net")
# 等待页面加载完成page.wait_for_load_state("networkidle")
# 获取特价机票信息的元素列表tickets=page.query_selector_all(".special-ticket-item")
# 创建一个空列表,用于存储特价机票信息data= []
# 遍历每个元素,获取相关信息forticketintickets:
# 获取出发地、目的地、价格、日期等信息departure=ticket.query_selector(".departure").inner_text()
destination=ticket.query_selector(".destination").inner_text()
price=ticket.query_selector(".price").inner_text()
date=ticket.query_selector(".date").inner_text()
# 将信息存入字典中info= {
"departure": departure,
"destination": destination,
"price": price,
"date": date        }
# 将字典添加到列表中data.append(info)
# 关闭浏览器browser.close()
# 进行整理统计# 导入pandas模块,用于数据分析importpandasaspd# 将列表转换为DataFrame对象df=pd.DataFrame(data)
# 打印DataFrame对象print(df)
# 按照价格升序排序df.sort_values(by="price", inplace=True)
# 打印排序后的DataFrame对象print(df)
# 统计每个出发地的特价机票数量count=df.groupby("departure").size()
# 打印统计结果print(count)
相关文章
|
20天前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
70 5
|
23天前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
20天前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
86 5
|
24天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
22天前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
152 1
|
30天前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
2月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
2月前
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
43 3
|
2月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
2月前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。