python自动化测试之Playwright使用

前两天接到了一个爬取网站的需求,而且刚好听说微软出了一个自动化的框架playwright,就尝试一下。

安装

官网
python版官网
目前playwright支持用node和python两种编程语言,之后也会做java和c#的实现。

# 安装playwright
pip install playwright

# 安装需要的浏览器驱动,支持chrome,firefox和webkit三种浏览器驱动
python -m playwright install

使用

# 演示程序爬取一个网页中表格的全部数据

# 使用同步的API
from playwright.sync_api import sync_playwright

# 用作类型标注,方便IDE提示
from typing import List
from playwright.sync_api import Browser, Page


# 获取表格中的数据
def extract_table_data(page: Page) -> "List[str]":
    temp = []
    # 选用所有符合条件的元素
    for cell in page.query_selector_all("#foreach td"):
        # element.textContent函数,获得元素内的文字
        temp.append(cell.text_content().strip())

    for i in range(9):
        for cell in page.query_selector_all(f"#foreach_{i} td"):
            temp.append(cell.text_content().strip())

    return temp


# 表格有三列,需要把一个列表拆分成三个
def split_lines(origin_list: list, list_len: int) -> List:
    return [origin_list[i:i + list_len] for i in range(0, len(origin_list),
                                                       list_len)]


def main():
    with sync_playwright() as playwright:
        # 创建浏览器,使用chrome浏览器,无头模式
        browser: Browser = playwright.chromium.launch(headless=True)

        # 创建新页面
        page: Page = browser.new_page()
        page.goto(
            "http://femhzs.mofcom.gov.cn/fecpmvc/pages/fem/CorpJWList.html")

        # 等待加载完毕,之后截个图
        page.wait_for_load_state("networkidle")
        page.screenshot(path="./screenshot.jpg", type="jpeg")

        # 抽取数据并输出到控制台上
        table = extract_table_data(page)
        line: List[str]
        for line in split_lines(table, 3):
            print(line[0] + "-" + line[1] + "-" + line[2])

        # 关闭浏览器
        browser.close()


if __name__ == "__main__":
    main()

其他功能

选择器

支持文字搜索,css选择器,xpath等各种选择器。详细说明在官方文档

page.query_selector(selector)

接受一个选择器作为参数,返回一个元素,元素可以进行click,fill等操作

page.query_selectorAll(selector)

同样接受一个选择器,返回符合条件的元素列表

page.fill(selector, text)

选择符合条件的第一个元素,输入文字

page.click(selector) / page.dblclick(selector)

按下/双击符合条件的第一个元素

录制脚本

# 访问维基百科然后录制脚本
playwright codegen wikipedia.org
备注

2021-10-09 Playwright API发生变动,原来camelcase风格的方法变成了python风格snake_case风格

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
使用 PlaywrightPython 可以方便地进行自动化测试。以下是一个简单示例,演示如何使用 Playwright 进行浏览器自动化测试: 1. 安装 PlaywrightPython: 在命令行中运行以下命令来安装 PlaywrightPython: ``` pip install playwright ``` 2. 初始化 Playwright: 在命令行中运行以下命令来初始化 Playwright: ``` playwright install ``` 3. 编写测试脚本: 创建一个 Python 脚本,并导入所需的模块和类: ```python from playwright.sync_api import sync_playwright def test_example(): with sync_playwright() as playwright: browser = playwright.chromium.launch() context = browser.new_context() page = context.new_page() # 打开网页 page.goto('https://www.example.com') # 在文本框中输入内容 page.fill('input[name="q"]', 'Playwright') # 点击搜索按钮 page.click('button[type="submit"]') # 等待搜索结果加载完毕 page.wait_for_load_state() # 断言页面标题是否包含关键字 assert 'Playwright' in page.title() # 关闭浏览器 context.close() browser.close() if __name__ == '__main__': test_example() ``` 在上述代码中,我们使用 Playwright 启动 Chromium 浏览器,创建一个新的页面,并在页面上执行一系列操作,包括打开网页、填充文本框、点击按钮、等待加载和断言页面标题。最后关闭浏览器。 4. 运行测试脚本: 在命令行中运行以下命令来执行测试脚本: ``` python test_script.py ``` 这将启动浏览器并执行测试脚本中的操作。如果一切正常,你将看到测试结果输出。 这只是一个简单的示例,Playwright 还提供了更多功能和 API,例如处理表单、截图、模拟用户行为等。你可以查阅 Playwright 的官方文档以了解更多详细信息和示例代码。希望这个示例能帮助你入门 PlaywrightPython 自动化测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OriginCoding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值