Skip to content

用工具自动生成代码、优化✅

前面我提到 Playwright 是一种用于进行 Web 自动化测试、数据抓取和任务自动化的工具。它可以让你用代码来控制浏览器,模拟人的操作,实现各种功能。今天来分享他最重要的功能:录制你的操作,自动生成代码。

Playwright 有一个非常实用的功能,就是可以自动录制你在浏览器中的操作,并生成相应的代码。这样,你就可以快速地创建自动化脚本,而不需要手动编写代码。这篇教程将介绍如何使用 Playwright 自动化生成代码的方法。

安装 Playwright

要使用 Playwright,你需要先安装 Playwright 库和浏览器驱动。你可以使用 pip 命令来安装 Playwright 库,如:

bash
pip install playwright

然后,你需要使用 python -m playwright install 命令来一键安装所有的浏览器驱动,包括 Chromium、Firefox、WebKit 等。这样,你就可以使用 Playwright 来控制不同的浏览器了。

如果只想安装 chromium 可以执行python -m playwright install chromium即可。

使用 Codegen 录制操作

Playwright 提供了一个 Codegen 工具,可以帮助你录制浏览器中的操作,并自动生成相应的代码。你可以使用以下的命令来启动 Codegen 工具,并指定一个网址作为起始页面:

bash
python -m playwright codegen [url]

例如,如果你想从百度的首页开始录制操作,你可以输入:

bash
python -m playwright codegen https://www.baidu.com

这样,你就会看到两个窗口,一个是浏览器窗口,一个是 Codegen 窗口。浏览器窗口会打开你指定的网址,你可以在这里进行任何你想要的操作,比如输入文本、点击按钮、滚动页面等。Codegen 窗口会实时显示你的操作对应的代码,你可以选择不同的语言和浏览器,也可以复制或保存代码。

查看和运行生成的代码

当你完成了录制操作,你可以查看 Codegen 窗口中的代码,它会包含以下的内容:

  • 导入 Playwright 库,并创建一个同步或异步的上下文管理器。
  • 启动一个浏览器,并创建一个新的页面对象。
  • 使用页面对象的方法来操作浏览器,比如 page.goto()page.click()page.fill() 等。
  • 关闭浏览器。

你可以复制这些代码,或者使用 -o 参数来保存到一个文件中,比如:

bash
python -m playwright codegen -o script.py https://www.baidu.com

这样,你就可以得到一个名为 script.py 的文件,里面包含了你录制的操作对应的代码。你可以使用以下的命令来运行这个文件:

bash
python script.py

这样,你就可以看到浏览器自动重复你录制的操作了。

优化

自动生成的代码可能不是最优化的。通常由于网络延迟、界面变动等原因导致运行不太稳定。为了让程序更稳定,我们还需要多次运行代码,进行优化。 以下是一些优化生成的 Playwright 代码的方法:

  1. 简化选择器:Codegen 可能会生成非常具体的选择器,这些选择器可能包含多余的部分。你可以通过简化这些选择器来提高代码的可读性和灵活性。

  2. 移除不必要的步骤:自动生成的代码可能包括一些不必要的步骤,例如额外的点击或滚动。审查并移除这些步骤可以提高脚本的效率。

  3. 合并步骤:如果多个操作可以合并为一个(例如,使用一个选择器进行多次操作),这样做可以简化脚本并提高其性能。

  4. 使用等待策略:Playwright 提供了多种等待元素加载的策略。合理使用这些策略可以避免不必要的延迟,比如使用 waitForSelector 而不是固定的 sleep

  5. 参数化数据:将硬编码的数据(如登录凭据或搜索词)替换为参数,使脚本更灵活,更易于维护。

  6. 错误处理:增加错误处理逻辑来处理可能出现的异常情况,例如元素未找到或网络请求失败。

  7. 代码复用:将重复代码提取到函数或类中,以提高代码的可维护性和可读性。

  8. 使用断言:确保你的测试脚本包含足够的断言来验证应用程序的行为是否符合预期。

  9. 性能考虑:考虑到性能,比如避免不必要的浏览器重启,使用合适的并发策略等。

  10. 代码风格和格式:遵循一致的编码风格和格式,使代码易于阅读和维护。

  11. 选择合适的超时时间:虽然 Playwright 可以自动检测元素是否 ready,但默认超时时间可能并不合适,需要设置合适的超时时间,最好是自动检测元素 ready 或 loaded 之后再进行相关操作。

记住,自动生成的代码只是一个起点,根据你的具体需求进行调整和优化是非常重要的。

总结

使用 Playwright 自动化生成代码的方法,可以让你快速地创建自动化脚本,而不需要手动编写代码。你只需要使用 Codegen 工具来录制你在浏览器中的操作,然后查看或保存生成的代码,再运行代码即可。这样,你就可以利用 Playwright 来实现各种 Web 自动化的功能了。

了解更多关于 Playwright 的知识,可以参考以下的网页:

练习题目:

可以尝试自己编写代码,然后和答案进行对比,看看有没有不同的思路或方法。

题目是:

  • 使用 playwright 打开淘宝,搜索 "iPhone 13",并打印出搜索结果的商品名称和价格。

参考答案