自动化神器Playwright-python


自动化神器Playwright-python(1)-安装部署

安装

# 安装python库
pip install   playwright
# 下载驱动
playwright install

录制

  1. 打开录制窗口
playwright codegen -o union.py -b firefox   # 火狐打开浏览器, 录制脚本写入到 union.py文件中
  1. 鼠标操作, 可以点击按钮进行添加断言, 录制结束关闭浏览器

  2. 脚本回放: 直接运行脚本

不足之处:

  • 上传操作无法成功录制, 需要手动修改
  • 页面跳转不聪明, 重定向的url也都会执行

文件上传

  • 方法1:通用方法
# 文件上传
with page.expect_file_chooser() as file_chooser_info:
    page.get_by_text("将文件拖入此区域或者选择文件(可以多选, 仅支持").click()  # 传递文件
files = get_files(file_name)
file_chooser_info.value.set_files(files)
page.wait_for_load_state()  # 等待上传完毕
  • 方法2: input元素
upload_ele = page.locator("input[type=file][name=file][multiple=multiple]")  # 获取input上传元素
upload_ele.set_input_files('1.jpg')  # 传递文件
page.wait_for_load_state() # 等待上传完毕

自动化神器Playwright-python(2)-等待机制

Playwright会自动等待页面数据展示, 无需手动设置, 这在某些场景下是有害的

解决不必要的等待问题

场景: 登录页面有二维码登录和账号登录2种方式, playwright会自动等待二维码展示(耗时较久,非必要)

解决方案: 设置goto超时机制, 报错直接pass

try:
    page.goto('https://xxx.com/admin/', timeout=1000)
except Exception as e:
    pass

获取session存储

dict_sessionStorage = page.evaluate('sessionStorage')

自动化神器Playwright-python(3)-设备仿真

playwright可通过浏览器的设备仿真技术, 测试移动端应用

设备仿真

from playwright.sync_api import sync_playwright
from loguru import logger

def run():
    with sync_playwright() as pw:
        # 获取设备配置信息
        iphone14 = pw.devices['iPhone 14']
        # 初始化一个设备环境, 打开页面
        browser = pw.chromium.launch(headless=False)
        context = browser.new_context(**iphone14)
        page = context.new_page()
        page.goto("http://baidu.com")
        page.pause()

Author: Feny Lau
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Feny Lau !
  TOC