大数跨境

Playwright自动化测试框架(一)

Playwright自动化测试框架(一) 慧测
2022-05-23
1
导读:Playwright自动化测试框架实战系列课程

        第一讲:Playwright自动化测试框架介绍、安装及录制

1、Playwright 简介

  • Playwright 为现代web应用提供了可靠的端到端的测试能力
  • 集Web自动化测试和接口自动化测试为一体的自动化测试框架
  • 一套API支持所有现代化浏览器:支持以Chromium、Firefox和WebKit为核心的浏览器,可以跨平台运行:在windows、linux、mac上都可以运行
  • 具备针对依赖现代化 web 平台的单页应用程序的自动化测试能力:支持Vue、React、Angular等单页应用程序的测试
  • 支持多种编程语言:PlayWright 提供了不同语言版本的框架,所以我们可以用自己最擅长的编程语言来使用她,包括  JavaScript & TypeScript、Python、C# 和 Java
  • 上手容易:一键安装、提供录制并自动生成脚本的功能。利用 API 启动浏览器、创建页面并自动进行页面交互
  • 自动等待功能让自动化更可靠:诸如点击之类的操作会自动等待 UI 的反馈,以确保脚本可靠地执行。通过等待明确的事件以获得更多的控制权,与超时彻底告别
  • 拦截网络活动:Playwright 可以拦截网络活动,以在测试场景中修改或模拟网络请求
  • 可运行多页仿真场景:Playwright 中的单个浏览器可以创建多个隔离的浏览器上下文。每个浏览器上下文都可以运行多页仿真场景

2、Playwright安装

Playwright的安装命令在Pycharm的终端Terminal中执行

  • pip install playwright

    安装Playwright自动化测试框架

  • playwright install

    安装Playwright浏览器驱动程序:自动安装Chromium的空白浏览器、Firefox和WebKit浏览器 

  • playwright codegen

    一键录制:自动生成代码  后面不跟参数时默认打开Chromium的空白浏览器,如果跟一个网址参数,会自动打开此网址的浏览器

3、Playwright录制

3.1 项目介绍

项目网址:http://appfront.huice.com/

此项目是一个大型商城项目,拥有前端界面、后端代码和前后端相应的接口,是技术全面的真正的企业级项目,本次系列课程会以这个项目为主进行实战演练,网站的访问方式请添加微信号huice666或下方助教微信进行领取

3.2 录制下订单场景

playwright codegen http://appfront.huice.com/

具体录制过程及回放过程见开头的视频:

代码如下:

from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()

    # Open new page
    page = context.new_page()

    # Go to http://appfront.huice.com/
    page.goto("http://appfront.huice.com/")

    # Click text=登录账户
    page.locator("text=登录账户").click()
    # expect(page).to_have_url("http://appfront.huice.com/customer/account/login")

    # Fill input[name="editForm\[email\]"]
    page.locator("input[name=\"editForm\\[email\\]\"]").fill("65132090@qq.com")

    # Fill input[name="editForm\[password\]"]
    page.locator("input[name=\"editForm\\[password\\]\"]").fill("123456")

    # Click button:has-text("登录")
    page.locator("button:has-text(\"登录\")").click()
    # expect(page).to_have_url("http://appfront.huice.com/customer/account")

    # Click li:nth-child(2) > .nav_t
    page.locator("li:nth-child(2) > .nav_t").click()
    # expect(page).to_have_url("http://appfront.huice.com/wedding")

    # Click text=0 肩带长袖高低日礼服 ¥358.00 >> img
    page.locator("text=0 肩带长袖高低日礼服 ¥358.00 >> img").click()
    # expect(page).to_have_url("http://appfront.huice.com/off-the-shoulder-long-sleeve-high-low-day-dress")

    # Click button:has-text("加入购物车")
    # with page.expect_navigation(url="http://appfront.huice.com/checkout/cart"):
    with page.expect_navigation():
        page.locator("button:has-text(\"加入购物车\")").click(delay=1000)

    # Click button:has-text("继续支付")
    page.locator("button:has-text(\"继续支付\")").click()
    # expect(page).to_have_url("http://appfront.huice.com/checkout/onepage")

    # Click text=支付订单
    page.locator("text=支付订单").click()

    # expect(page).to_have_url("http://appfront.huice.com/payment/success")
    page.pause()

    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)


【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 404
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读104
粉丝0
内容404