肃宁县做网站,甘肃庆阳今天重大新闻,推广黄冈软件必备软件,东莞企业网站搭建制作1. 主流框架的认识 总结#xff1a; 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化#xff0c;因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三…1. 主流框架的认识 总结 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三个框架都是基于JavaScript开发的且都不支持Python所以使用率并没有很高。playwright则是综合了上述框架的优点提供了很好的体验将来可能成为流行的趋势。
2. Playwright认识 Playwright简介 2020年微软Microsoft开源了一个名为Playwright的工具与Selenium一样入门简单支持多语言Python、Java、Node.js、.NET支持多浏览器Chromium、Firefox、Webkit,可跨平台Windwos、Linux、Mac OSPlaywright同时支持接口自动化和UI自动化为现代web应用提供了可靠的端到端的测试能力。 Playwright优势 1自动等待功能让自动化更可靠2自动追踪可以很方便地配置重试策略自动的追踪结果以截图和录屏的方式进行记录。3断言机制会根据网络环境进行自动断言直到满足某种条件为止。4异步执行Playwright基于socket进行双向通讯支持同步与异步执行两种方式5可运行多页仿真场景Playwright是通过上下文管理浏览器相当于每一个测试用例都会创建一个独立的上下文浏览器的上下文其实就是一个全新的浏览器这种方式的好处就是在提速的同时又实现测试与测试之间的隔离使得测试结果更加准确所以可以实现并行执行。6强大的工具集还我们提供了强大的工具集例如脚本录制工具codegen、脚本编写以及调试工具playwright等
3. Playwright环境搭建 Python环境python解释器IDE工具不知道怎么安装的可参考 python3.4 pycharm 环境安装 pycharm 使用 Playwright环境 安装Playwrightpip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple 安装内置浏览器(chromium,firefox,webkit)playwright install 4. Playwright入门实战
1脚本录制
案例1实现Web ui自动化打开浏览器访问测试派测试派 - 软件测试工程师的心灵社区点击登录后在进行登录操作输入用户名、密码点击登录按钮操作步骤 第一步pycharm--Terminal中输入命令playwright codegen会自动打开浏览器和Playwright Inspector工具Playwright Inspector工具自动开启录制功能第二步在打开的浏览器中进行相关的操作如访问地址、点击或输入操作第三步操作完成后在Playwright Inspector中点击Record停止录制然后复制代码即可 from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) - None: browser playwright.chromium.launch(headlessFalse) context browser.new_context() page context.new_page() page.goto(http://testingpai.com/) page.get_by_text(登录).click() page.get_by_placeholder(用户名/邮箱/手机号).click() page.get_by_placeholder(用户名/邮箱/手机号).fill(kemi) page.get_by_placeholder(用户名/邮箱/手机号).press(Tab) page.get_by_placeholder(密码).fill(123456) page.pause() # 断点调试功能 page.get_by_role(button, name登录).click() # --------------------- context.close() browser.close() with sync_playwright() as playwright: run(playwright)
2录制工具快速定位元素
如果我自己写代码需要定位元素通过Playwright Inspector工具的Pick locator可以快速获取元素定位的信息具体操作如下截图 Playwright支持两大类元素定位方式包括1get_by方式 get_by_id: 通过元素的 id 属性来查找元素例如element page.get_by_id(my-id)get_by_name: 通过元素的 name 属性来查找元素例如element page.get_by_name(my-name)get_by_text: 通过元素的文本内容来查找元素例如element page.get_by_text(Submit)get_by_title: 通过元素的 title 属性来查找元素例如element page.get_by_title(my-title)get_by_placeholder: 通过元素的 placeholder 属性来查找元素例如element page.get_by_placeholder(my-placeholder)get_by_selector: 通过 CSS 选择器来查找元素例如element page.get_by_selector(#submit-button)get_by_xpath: 通过 XPath 表达式来查找元素例如element page.get_by_xpath(//div[classmy-class])get_by_label: 根据label属性值查找元素类似于HTML中的label标签和对应的for属性。get_by_role: 通过角色方式定位元素例如element page.get_by_role(button, nameSubmit)2page.locator方式 通过ID定位元素使用page.locator(#element-id)或page.locator(idelement-id)定位。通过CSS选择器定位元素使用page.locator(cssselector)定位。例如element page.locator(button#submit-button)通过XPath表达式定位元素使用page.locator(xpathexpression)定位。例如element page.locator(//button[idsubmit-button])通过名称定位元素使用page.locator(nameelement-name)定位。通过链接文本定位元素使用page.locator(textlink-text)定位。通过部分链接文本定位元素使用page.locator(partial_textpartial-link-text)定位。通过元素属性定位元素使用page.locator([attributevalue])定位。通过标签名定位元素使用page.locator(tagtag-name)定位。
4. PytestAllurePlaywright完整项目演示
1脚本转为测试用例
案例需求将上面测试派测试派 - 软件测试工程师的心灵社区的登录操作转为测试用例操作步骤 第一步pycharm--Terminal中输入命令playwright codegen会自动打开浏览器和Playwright Inspector工具Playwright Inspector工具自动开启录制功能第二步在打开的浏览器中进行相关的操作如访问地址、点击或输入操作第三步操作完成后在Playwright Inspector中点击Record停止录制第四步在Target中选择Python下的pytest,就会自动化将录制的代码转为测试用例然后复制代码即可。具体操作如下截图所示 代码如下 from playwright.sync_api import Page, expect def test_example(page: Page) - None: page.goto(http://testingpai.com/) page.get_by_text(登录).click() page.get_by_placeholder(用户名/邮箱/手机号).click() page.get_by_placeholder(用户名/邮箱/手机号).fill(kemi) page.get_by_placeholder(用户名/邮箱/手机号).press(Tab) page.get_by_placeholder(密码).fill(123456) page.get_by_role(button, name登录).click()
执行用例前必须先安装插件否则会报错因为用例只有核心的业务操作没有浏览器、上下文、页面的初始化装了插件后会自动做这些初始化的操作从而执行用例不会报错。命令pip install pytest-playwright 2数据驱动
集合pytest的parametrize实现数据驱动 import pytest from playwright.sync_api import Page, expect # 测试用例数据 case_data [{caseid:1,username:kemi123, password:kemi123}, {caseid:2,username:zhangsan, password:123456}, {caseid:3,username:lisi, password:123456}] # 数据驱动 pytest.mark.parametrize(case, case_data) def test_example(page: Page,case) - None: username case[username] password case[password] page.goto(http://testingpai.com/) page.get_by_text(登录).click() page.get_by_placeholder(用户名/邮箱/手机号).click() page.get_by_placeholder(用户名/邮箱/手机号).fill(username) page.get_by_placeholder(用户名/邮箱/手机号).press(Tab) page.get_by_placeholder(密码).fill(password) page.get_by_role(button, name登录).click() page.screenshot(pathfimages/login/登录{case[caseid]}.png) # 截图保存到指定位置
3报告显示
通过pytest执行用例后通过命令生成报告allure serve outputs/allure查看报告显示截图如下