Playwright系列(8):认识playwright 相关库

简介: Playwright系列(8):认识playwright 相关库

大家好,前面把基本概念介绍完了。今天开始正式介绍如何使用python 去写playwright 脚本。


安装


Pip方式


pip install --upgrade pippip install playwrightplaywright install


Conda方式安装


conda config --add channels conda-forgeconda config --add channels microsoftconda install playwrightplaywright install


这些命令会下载 Playwright 包以及安装相关浏览器Chromium, Firefox and WebKit。


使用这些库


安装好了之后,就可以在一个Python脚本中导入Playwright,然后启动这三个浏览器中 的一个(chromium, firefox and webkit)。


from playwright.sync_api import sync_playwrightwith sync_playwright() as p:    browser = p.chromium.launch()    page = browser.new_page()    page.goto("http://playwright.dev")    print(page.title())    browser.close()


Playwright 支持2个类型的API: 同步和异步。如果你的项目使用的异步, 那么你就可以用异步的API 。


import asynciofrom playwright.async_api import async_playwrightasync def main():    async with async_playwright() as p:        browser = await p.chromium.launch()        page = await browser.new_page()        await page.goto("http://playwright.dev")        print(await page.title())        await browser.close()asyncio.run(main())


你的第一个Playwright脚本


在第一个脚本中,我们将访问whatsmyuseragent.org 然后截个图。


from playwright.sync_api import sync_playwrightwith sync_playwright() as p:    browser = p.webkit.launch()    page = browser.new_page()    page.goto("http://whatsmyuseragent.org/")    page.screenshot(path="example.png")    browser.close()


默认情况下, Playwrright 使用浏览器的无头模式。 如果想关闭这个模式,上设置 headless=False 就可以启动浏览器了。也可以用 slow_mo 让脚本执行变慢.



firefox.launch(headless=False, slow_mo=50)


交互模式 (REPL)


也可以启动python 的交互模式 REPL:


python

然后快速启动Playwright


>>> from playwright.sync_api import sync_playwright>>> playwright = sync_playwright().start()# Use playwright.chromium, playwright.firefox or playwright.webkit# Pass headless=False to launch() to see the browser UI>>> browser = playwright.chromium.launch()>>> page = browser.new_page()>>> page.goto("http://whatsmyuseragent.org/")>>> page.screenshot(path="example.png")>>> browser.close()>>> playwright.stop()


也可以用异步模式:


python -m asyncio


>>> from playwright.async_api import async_playwright>>> playwright = await async_playwright().start()>>> browser = await playwright.chromium.launch()>>> page = await browser.new_page()>>> await page.goto("http://whatsmyuseragent.org/")>>> await page.screenshot(path="example.png")>>> await browser.close()>>> await playwright.stop()


Pyinstaller


也可以用 Playwright 的 Pyinstaller来创建一个独立的执行脚本.


# main.pyfrom playwright.sync_api import sync_playwrightwith sync_playwright() as p:    browser = p.chromium.launch()    page = browser.new_page()    page.goto("http://whatsmyuseragent.org/")    page.screenshot(path="example.png")    browser.close()


如果想绑定浏览器到执行脚本上, 可以设置如下配置。


Bash


PLAYWRIGHT_BROWSERS_PATH=0 playwright install chromiumpyinstaller -F main.py

PowerShell


$env:PLAYWRIGHT_BROWSERS_PATH="0"playwright install chromiumpyinstaller -F main.py


Batch


set PLAYWRIGHT_BROWSERS_PATH=0playwright install chromiumpyinstaller -F main.py


已知问题


time.sleep()会导致状态过期

很可能你不需要手动等待,因为Playwright有自动等待功能。如果你仍然依赖它,你应该使用page.wait_for_timeout(5000)而不是time.sleep(5),最好是完全不等待超时,但有时它对调试是有用的。在这些情况下,使用我们的等待(wait_for_timeout)方法而不是时间模块。这是因为我们内部依赖于异步操作,当使用time.sleep(5)时,它们不能得到正确处理。


与Windows上Asyncio的SelectorEventLoop不兼容

Playwright在一个子进程中运行驱动,所以在Windows上需要asyncio的ProactorEventLoop,因为SelectorEventLoop不支持异步子进程。


在Windows的Python 3.7上,Playwright将默认的事件循环设置为ProactorEventLoop,因为它在Python 3.8以上是默认的。


线程


Playwright的API不是线程安全的。如果你在多线程环境中使用Playwright,你应该为每个线程创建一个playwright实例。


如果觉得阿萨的内容对你有帮助,欢迎围观点赞。

相关文章
|
3天前
|
Web App开发 资源调度 JavaScript
安装 Playwright
安装 Playwright
16 4
|
2天前
|
JavaScript 前端开发 测试技术
Playwright 测试
Playwright 测试;编写测试用例
8 0
|
6月前
|
前端开发 测试技术
使用 Playwright 进行元素定位
本文介绍了Playwright在自动化测试和网页爬取中如何定位页面元素。通过CSS选择器、XPath和文本内容等方式,Playwright的`locator`对象允许灵活定位。示例代码展示了使用`query_selector()`、XPath表达式以及`with_text()`方法找到元素并获取其文本。此外,文章还提到了其他内置定位方法,如根据角色、标签文本、占位符等属性进行定位,并提供了相关使用示例。总之,Playwright提供了丰富的元素定位方法,便于高效地进行网页操作。
176 4
|
6月前
|
Web App开发 Linux C++
Playwright系列(7):用VSCode 开始写Playwright 脚本
Playwright系列(7):用VSCode 开始写Playwright 脚本
883 0
Playwright系列(7):用VSCode 开始写Playwright 脚本
|
6月前
|
Web App开发 Linux iOS开发
PlayWright 系列1:安装
PlayWright 系列1:安装
159 0
|
6月前
|
Web App开发 存储 测试技术
Playwright系列(11):Playwright命令行
Playwright系列(11):Playwright命令行
366 0
|
Web App开发
chrome配置selenium操作
chrome配置selenium操作
117 0
|
Web App开发 JavaScript 前端开发
Playwright\Selenium如何选择及示例
Playwright和Selenium都是用于Web UI自动化测试的工具,但是它们有一些不同的特点和功能。 Playwright是由微软开发的一个较新的框架,它使用websockt协议来操作浏览器内核,可以实时获取页面状态,也可以和浏览器双向沟通。 Selenium是一个出现较早的工具,它使用http协议来自动化Web浏览器,允许开发人员编写与网页和元素交互的测试。
328 0
|
编解码 自然语言处理 JavaScript
软件测试|比Selenium更加强大的Playwright
软件测试|比Selenium更加强大的Playwright
577 0
软件测试|比Selenium更加强大的Playwright