自动化神器Playwright-python

2024-05-06 09:42:02 浏览数 (2)

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

安装

代码语言:javascript复制
# 安装python库
pip install   playwright
# 下载驱动
playwright install

录制

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

不足之处:

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

文件上传

  • 方法1:通用方法
代码语言:javascript复制
# 文件上传
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元素
代码语言:javascript复制
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

代码语言:javascript复制
try:
    page.goto('https://xxx.com/admin/', timeout=1000)
except Exception as e:
    pass

获取session存储

代码语言:javascript复制
dict_sessionStorage = page.evaluate('sessionStorage')

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

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

设备仿真

代码语言:javascript复制
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()

0 人点赞