python+playwright自动化测试(一):安装及简单使用,截图录屏

目录

基本使用

浏览器调用

启用浏览器

创建窗口对象

访问URL

页面的刷新、返回、前进

关闭

截图、录屏、保存pdf

截图

录屏

保存为pdf

设置窗口大小

调试模式

手机模式及new_context的更多参数

手机模式

new_context的其他参数

设置语言和时区

设置和修改位置

用户代理设置

离线模式

禁用或启用java_script_enabled


playwright是一个非常强大的自动化框架,支持Linux、Mac以及Windows操作系统操作,支持Chromium、Firefox、WebKit等主流浏览器自动化操作。

官网:https://playwright.dev/

安装playwright框架:pip install playwright

安装浏览器驱动:playwright install ,可指定对应浏览器安装,如playwright install Chromium,不指定时安装默认的Chromium、Firefox、Webkit,自动化运行需要在对应浏览器和驱动下使用,不安装无法运行脚本。

基本使用

浏览器调用

from playwright.sync_api import sync_playwright
from time import sleep

with sync_playwright() as p:
    # wd = p.firefox
    # wd = p.chromium
    # wd = p.webkit

启用浏览器

headless:指定有头或无头模式(显示或隐藏浏览器界面运行脚本)

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

创建窗口对象

page = browser.new_page()

访问URL

page.goto('https://www.baidu.com')

页面的刷新、返回、前进

    page.reload()  # 刷新页面,支持timeout和wait_until参数
    page.go_back()  # 回退,支持timeout和wait_until参数
    page.go_forward()  # 前进,支持timeout和wait_until参数

关闭

    page.close()  # 关闭页面
    browser.close()  # 关闭浏览器

截图、录屏、保存pdf

截图

支持设置截图的前景背景大小等参数,见源码

截取整个页面

page.screenshot(path='screenshot.png', full_page=True)  # 设置截取整页full_page

截取某个元素

    img = page.locator('#kw')
    img.screenshot(path=f'input_box.png')

 

录屏

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True) 
    context = browser.new_context(
        record_video_dir="videos/",  # 录屏保存文件保存位置
        record_video_size={'width': 1920, 'height': 1080}  # 设置录屏像素,不设置时会发现录下来的视频很模糊)
    page = context.new_page()

record_video_size参数的设置关键性,不设置时录屏内容很糊(可解决playwright录屏内容模糊的问题),设置和不设置的效果对比如下

python+playwright自动化测试(一):安装及简单使用,截图录屏_第1张图片

python+playwright自动化测试(一):安装及简单使用,截图录屏_第2张图片

保存为pdf

page.pdf(path='page.pdf')

设置窗口大小

窗口最大化设置

方法一:

增加args参数和no_viewport参数

args=['--start-maximized']设置启动窗口最大化,传递给浏览器实例“最大化”参数项,args参数设置项非常丰富:https://peter.sh/experiments/chromium-command-line-switches/

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, args=['--start-maximized'])
    context = browser.new_context(
        no_viewport=True  # 禁用窗口大小
    )
    page = context.new_page()

 方法二:

支持自由大小设置

    context = browser.new_context(
        viewport={'width': 1920, 'height': 1080},  # 设置窗口大小
    )

    page = context.new_page()

方法三:

支持自由大小设置

page.set_viewport_size({'width': 1920, 'height': 1080})  # 设置窗口大小

方法二和方法三效果相同,一个在创建窗体前,一个在创建窗体后。

方法一必须是headless=False时生效(即显示模式下),方法二三不受headless限制,均生效。

方法一截图操作的图片高度偏小,方法二三截图操作的图片分辨率和代码中设置的一致。

方法一截图时保持屏幕的缩放比例,方法二三按屏幕缩放比例固定为100%时进行截图。

调试模式

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)  # slow_mo:慢动作模式,用于调试模式
    context = browser.new_context(record_har_path="debug.har")  # 保存调试追踪,page.pause()开启调试模式后可见效果
    page = context.new_page()
    page.pause()  # 开启调试模式

python+playwright自动化测试(一):安装及简单使用,截图录屏_第3张图片

手机模式及new_context的更多参数

手机模式

    iphone = p.devices['iPhone 13 Pro']
    context = browser.new_context(
        **iphone,  # 添加设备
    )

new_context的其他参数

设置语言和时区

locale='zh-CN', # 设置语言
timezone_id='Asia/Shanghai', # 设置时区为上海

将locale='de-DE'设置为德语后,访问https://bing.com/会发现页面语言变为德语

设置和修改位置

可访问百度地图看看效果哦

context = browser.new_context(
geolocation={'longitude': 120.756379, 'latitude': 30.783679},
permissions=['geolocation']
)

context.set_geolocation({'longitude': 121.09213, 'latitude': 32.010647})
用户代理设置

user_agent=' xxx test user agent' 

离线模式

offline=True

禁用或启用java_script_enabled

java_script_enabled=False

你可能感兴趣的:(python,自动化测试,python,开发语言,自动化)