嗨,各位Python程序员,放弃selenium,试试年轻的Playwright如何?

⛳️ 实战场景

上一篇博客我们首次接触年轻的自动化模块 playwright,惊讶于其代码录制功能,今天咱们接着学习一下,其 API 相关知识。

正式学习前,先把基础示例代码呈现给大家。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)

    page = browser.new_page()
    page.goto("http://example.com")
    print(page.title())
    browser.close()

注意上述代码使用的不是无头浏览器,运行代码得到请求站点的标题,下面继续对代码进行扩展。

⛳️ 实现浏览器截图

通过浏览器打开站点之后,可以对网页默认展示区域进行截图操作,代码如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)

    page = browser.new_page()
    page.goto("http://example.com")
    page.screenshot(path="example.png")
    browser.close()

在运行目录生成如下图片: 嗨,各位Python程序员,放弃selenium,试试年轻的Playwright如何?

⛳️ 将截图代码优化为异步模式

上述截图代码为同步模式,可以进行简单的修改,从而调整为异步模式。

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.new_page()
        await page.goto('http://example.com')
        await page.screenshot(path='example.png')
        await browser.close()

asyncio.get_event_loop().run_until_complete(main())

这里一定要注意 async_playwrightsync_playwright 导入模式,互联网很多博客这里都写错误,也不知道他们的代码是怎么运行起来的,对比代码如下所示:

from playwright.async_api import async_playwright # 异步导入
from playwright.sync_api import sync_playwright # 同步导入

⛳️ 模拟手机端访问

模拟手机操作用到的核心方法如下所示:

  • p.devices[phone_name]:选择设备名,可以从谷歌浏览器的开发者工具中进行选择,截图在代码后。
  • browser.new_context():初始化浏览器的时候,可以进行参数配置。
from playwright.sync_api import sync_playwright # 同步导入

with sync_playwright() as p:
    phone_name = 'iPhone 13'
    iphone_13 = p.devices[phone_name]
    browser = p.webkit.launch(headless=False)
    context = browser.new_context(
        **iphone_13,
        locale='zh-CN'
    )
    page = context.new_page()
    page.goto('https://baidu.com')
    page.screenshot(path=f'{phone_name}.png')
    # browser.close()

可以选择的设备名称(包含但不限于!) 嗨,各位Python程序员,放弃selenium,试试年轻的Playwright如何? 运行上述代码,可以模拟手机访问效果。

本篇博客最后补充的知识点是 browser.new_context() 方法的详细参数说明(全网首发)。

  • accept_downloads:布尔类型,是否自动下载所有附件,默认为 True
  • base_url:根路径,这个参数要配合 goto()route() 方法使用;
  • bypass_csp:布尔类型,跨域攻击配置;
  • device_scale_factor:设备比例基数,默认是 1.0
  • extra_http_headers:字典对象,每个请求发送的附加 HTTP 头的对象;
  • geolocation:地理位置,字典格式,包含经纬度,以及精度;
  • ignore_https_errors:发送网络请求时是否忽略 HTTPS 错误;
  • is_mobile:是否考虑 meta-viewport 标记并启用触摸事件,不支持火狐;
  • java_script_enabled:是否支持 JS;
  • locale :指定用户区域设置;
  • no_viewport:不强制固定窗口,允许在标题模式下调整窗口大小;
  • offline:是否离线模式;
  • proxy:代理设置;
  • storage_state:用户状态设置,例如 cookiesorigins
  • user_agent:用户代理设置;
  • viewport:窗口大小,默认 1280*720,也可以通过字典设置宽度和高度。
---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值