Playwrigh(python)微软浏览器自动化教程(一)

写在前面,欢迎去我的博客参观:Scout he

1、简介

Playwright 支持大部分的语言,Node.js, python, Java, .Net, 并且支持谷歌,火狐等浏览器,跨平台,并且支持移动端的模拟,可以很方便的录制脚本。
并且可以使用同步或异步的打开方式。我们先从同步开始。

2、快速开始

2.1、安装

PIP

pip install --upgrade pip
pip install playwright
playwright install

2.2、录制脚本

推荐新手首先使用提供的录制功能,自己录制一个脚本,然后对着生成的代码,这样会对这个的使用流程有一个大概的理解。使用下面的命令可以快速录制一个脚本。

playwright codegen  wikipedia.org

  -o <file name>               保存的文件名
  --target <language>          生成的脚本语言,像javascript, python(默认) 
  -b                           指定浏览器 chromium(默认), firefox
  --channel <channel>          指定浏览器版本"chrome","chrome-beta", "msedge-dev"
  --device <deviceName>        模拟设备,像 "iPhone 11" 
  -h, --help                   更多命令,请看帮助

3、脚本详解

我们先从一个简单录制的脚本讲起,在生成脚本的同时,还自动生成了注释,可以说是非常方便,根据注释也可以帮助我们理解代码

from playwright.sync_api import Playwright, sync_playwright
def run(playwright: Playwright) -> None:
    # 首先实例化一个浏览器对象
    browser = playwright.chromium.launch(headless=False)
    # 打开一个浏览器会话
    context = browser.new_context()
    # 打开一个新页面
    page = context.new_page()
    # Go to https://www.google.com.hk/?gws_rd=ssl
    page.goto("https://www.google.com.hk/?gws_rd=ssl")
    # Click [aria-label="搜索"]
    page.click("[aria-label=\"搜索\"]")
    # Fill [aria-label="搜索"]
    page.fill("[aria-label=\"搜索\"]", "playwright")
    # Press Enter
    # 这里是一个页面导航功能
    # 点击元素可以出发导航,要求使用 page.expect_navigation(**kwargs)
    # 这里点击了搜索按钮,这样页面信息可以获取浏览器新的内容
    with page.expect_navigation():
        page.press("[aria-label=\"搜索\"]", "Enter")
    # 这里由于打开了新的页面,所以需要使用page.expect_popup()来获取新的页面,并且用as来操作新的页面
    with page.expect_popup() as popup_info:
        page.click("text=Playwright: Fast and reliable end-to-end testing for modern ...")
    # 这里将新页面命名为page1,并将新的页面信息传给page1
    page1 = popup_info.value
    # 关闭浏览器会话,和浏览器
    context.close()
    browser.close()
with sync_playwright() as playwright:
    run(playwright)

4、总结

目前来看,这个录制功能是比较方便好用的,可以帮助我们快速理解代码
但是缺点也很明显,这个录制功能无法进行循环操作,仅这一条就说明无法靠录制解决所有的自动化任务,除非你选择在外层进行循环,但那样会降低效率,并且从上面代码上来看,其自动定位的元素都是text,无法从网页根本上定位元素。
下一节,我将介绍playwright的核心概念,来帮助理解整个的工作流程
参考文章:
playwright for python

你可能感兴趣的:(python,node.js,javascript,爬虫)