Python中怎么使用Playwright实现自动化

发布时间:2021-07-10 16:41:51 作者:Leah
来源:亿速云 阅读:719

这篇文章将为大家详细讲解有关Python中怎么使用Playwright实现自动化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、Playwright介绍

Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。

Playwright提供的自动化技术是绿色的、功能强大、可靠且快速,支持Linux、Mac以及Windows操作系统。

还有朋友这么夸:这个项目作为针对 Python 语言纯自动化的工具,解放了代码,实现了自动化功能,我们来看看怎么用它吧。

2、Playwright使用

安装

Playwright的安装非常简单,两步解决。

安装playwright库  pip install playwright  安装浏览器驱动文件(安装过程稍微有点慢)  python -m playwright install  复制代码

上面两个pip操作分别安装:

录制

使用Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

下面就是录制的命令codegen,仅仅一行。

命令行键入 --help 可看到所有选项  python -m playwright codegen  复制代码

codegen的用法可以使用--help查看,如果简单使用就是直接在命令后面加上url链接,如果有其他需要可以添加options。

python -m playwright codegen --help  Usage: index codegen [options] [url] open page and generate code for user actions  Options:    -o, --output <file name>  saves the generated script to a file    --target <language>       language to use, one of javascript, python, python-async, csharp (default: "python")    -h, --help                display help for command  Examples:    $ codegen    $ codegen --target=python    $ -b webkit codegen https://example.com  复制代码

options含义:

比如,我要在baidu.com搜索,用chromium驱动,将结果保存为my.py的python文件。

python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com  复制代码

命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被自动翻译成代码,如下所示。

Python中怎么使用Playwright实现自动化

结束后自动关闭浏览器,保存生成的自动化脚本到py文件。

from playwright import sync_playwright  def run(playwright):  browser = playwright.chromium.launch(headless=False)  context = browser.newContext()  # Open new page  page = context.newPage()  page.goto("https://www.baidu.com/")  page.click("input[name="wd"]")  page.fill("input[name="wd"]", "jingdong")  page.click("text="京东"")  # Click //a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']  with page.expect_navigation():     with page.expect_popup() as popup_info:          page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")      page1 = popup_info.value  # ---------------------  context.close()  browser.close()  with sync_playwright() as playwright:  run(playwright

此外,playwright还提供了同步和异步的API接口,文档如下。

链接:https://microsoft.github.io/playwright-python/index.html

同步

下面示例代码:依次打开三个浏览器,前往baidu搜索,截图后退出。

from playwright import sync_playwright  with sync_playwright() as p:  for browser_type in [p.chromium, p.firefox, p.webkit]:      browser = browser_type.launch()      page = browser.newPage()      page.goto('https://baidu.com/')      page.screenshot(path=f'example-{browser_type.name}.png')      browser.close()      复制代码

异步

异步操作可结合asyncio同时进行三个浏览器操作。

import asyncio  from playwright import async_playwright  async def main():  async with async_playwright() as p:      for browser_type in [p.chromium, p.firefox, p.webkit]:          browser = await browser_type.launch()          page = await browser.newPage()          await page.goto('http://baidu.com/')          await page.screenshot(path=f'example-{browser_type.name}.png')          await browser.close()          asyncio.get_event_loop().run_until_complete(main())         复制代码

移动端

更厉害的是,playwright还可支持移动端的浏览器模拟。下面是官方文档提供的一段代码,模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器,首先导航到maps.google.com,然后执行定位并截图。

from playwright import sync_playwright  with sync_playwright() as p:  iphone_11 = p.devices['iPhone 11 Pro']  browser = p.webkit.launch(headless=False)  context = browser.newContext(      **iphone_11,      locale='en-US',      geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },      permissions=['geolocation']  )  page = context.newPage()  page.goto('https://maps.google.com')  page.click('text="Your location"')  page.screenshot(path='colosseum-iphone.png')  browser.close()  复制代码

另外,还可以配合pytest插件一起使用,感兴趣可以自己试一下。

3、总结

playwright相比已有的自动化测试工具有很多优势,其中有:

支持所有浏览器的

拥有快速可靠的执行

拥有强大的自动化功能

但它也有局限性

关于Python中怎么使用Playwright实现自动化就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. python中怎么实现自动化报表
  2. 怎么使用Playwright对Java API实现自动视觉测试

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Python中如何使用中文变量名

下一篇:Python数据模型与对象模型的区别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》