在Playwright实战详细地介绍了Playwright的优势、环境搭建、案例实战的过程。本文章主要阐述Playwright在多浏览器执行的过程。
不管是单体架构的产品还是微服务架构的产品,对质量交付团队而言实施基于业务场景的自动化测试是必不可少的,只不过实施的测试层次是不一样而已。我个人更加倾向于通过服务端自动化测试的模式来进行场景化=的测试,但是最上层的UI自动化测试是非常有必要的。而Playwright无疑是一个比较好的选择。
端到端测试主要是测试产品哪些维度了?我总结下来主要是测试产品如下几个维度的点:
当然除了上面列出来的还有很多的测试点,而Playwright是非常优秀的端到端自动化测试解决方案框架之一,使用它完全能够满足针对如上几点的测试诉求。下面详细阐述它对多浏览器的支持与执行的过程。以新浪邮箱登录为案例,代码如下:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import re
from playwright.sync_api import sync_playwright,Page,expect
import pytest
import allure
def test_sina_url(page:Page):
page.goto('https://mail.sina.com.cn/')
expect(page).to_have_url(re.compile('https://mail.sina.com.cn/'))
@allure.title("新浪邮箱:验证用户名输入框提示信息")
def test_sina_username_title(page:Page):
with allure.step('访问新浪邮箱首页'):
page.goto("https://mail.sina.com.cn/")
with allure.step('定位到元素属性'):
divText=page.locator('body > div.mailLoginBox > div > div.mainBox.bg1 > div > div > div:nth-child(6) > div.loginBox > div.freeMailbox > div.usernameBox.focus > label').text_content()
assert divText=='输入邮箱名/手机号'
@allure.title("新浪邮箱:验证登录信息为空的错误提示信息")
def test_sina_username_div(page:Page):
with allure.step('访问新浪邮箱首页'):
page.goto("https://mail.sina.com.cn/")
with allure.step('输入登录账户为空'):
page.locator('#freename').fill('')
with allure.step('输入登录账户密码为空'):
page.locator('#freepassword').fill('')
with allure.step('点击登录按钮'):
page.locator('body > div.mailLoginBox > div > div.mainBox.bg1 > div > div > div:nth-child(6) > div.loginBox > div.freeMailbox > div.loginOrRegister.clearfix > div.loginRegisterSubmit > a.loginBtn').click()
with allure.step('获取登录信息为空的错误提示信息'):
divText=page.locator('body > div.mailLoginBox > div > div.mainBox.bg1 > div > div > div:nth-child(6) > div.loginBox > div.freeMailbox > div.freeError > span.loginError.tip11').text_content()
with allure.step('验证结果信息'):
assert divText=='请输入邮箱名'
针对如上的代码,单独自定义指定单个浏览器执行,也可以指定多个浏览器执行,下面主要是指定多个浏览器执行,命令如下:
pytest -v -s --browser webkit --browser firefox --browser chromium test_sina.py
执行后的结果信息如下:
如上所示测试用例在每个浏览器都进行了执行