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录屏内容模糊的问题),设置和不设置的效果对比如下

保存为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()  # 开启调试模式

手机模式及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

### 关于Web自动化测试中的工具与方法 在Web自动化测试领域,项非常重要的功能,可以帮助开发者和测试人员更好地分析测试过程中发生的异常行为。以下是Selenium和Playwright这两种主流自动化测试框架中涉及到的相关方法或工具。 #### Selenium 的解决方案 Selenium本身并不直接提供内置的功能,但可以通过第三方库来实现这需求。例如,`pyvirtualdisplay` 和 `imageio` 是两个常用的组合方案[^1]。 - **PyVirtualDisplay**: 这是个虚拟显示库,允许你在无头模式下运行浏览器并捕获幕内容。 - **ImageIO/FFmpeg**: 可以用来将系列截图拼接成视频文件。 下面是简单Python代码示例,展示如何利用这些库完成: ```python from pyvirtualdisplay import Display from selenium import webdriver import imageio def record_selenium_test(): display = Display(visible=0, size=(800, 600)) display.start() driver = webdriver.Chrome() screenshots = [] try: driver.get("https://example.com") for _ in range(10): # 假设每秒截取次图 screenshot = driver.get_screenshot_as_png() screenshots.append(imageio.imread(screenshot)) finally: driver.quit() display.stop() imageio.mimsave('output.mp4', screenshots, fps=2) record_selenium_test() ``` 此代码片段展示了如何启动虚拟显示器、加载网页并保存为MP4格式的像文件。 #### Playwright功能 相比之下,Playwright 提供了更为简便的原生支持来进行操作。其核心在于 `start_video()` 方法,该方法可以在页面实例上启用视频制功能,并最终导出为 MP4 文件[^2]。 以下是个完整的例子,演示如何使用Playwright进行: ```python from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context(record_video_dir="videos/") page = context.new_page() page.goto("https://example.com") # 执行某些动作... page.fill("#input", "Test Value") page.click("#button") video_path = context.video.path() # 获取视频路径 context.close() browser.close() ``` 上述代码不仅实现了基本的浏览逻辑,还启用了视频制并将结果存储到指定目下的 `.mp4` 文件中。 #### 对比总结 | 特性 | Selenium | Playwright | |---------------------|-----------------------------------|--------------------------------| | 是否需要额外依赖 | 需要 (如 PyVirtualDisplay) | 不需要 | | 易用性和集成度 | 较低 | 更高 | | 性能开销 | 中 | 小 | 显然,在处理复杂的UI交互或者频繁更新的内容时,Playwright凭借其高效的架构设计以及丰富的特性集合显得尤为突出[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值