01UI自动化介绍UI自动化测试是指通过编写自动化脚本来模拟用户操作UI界面并验证UI的正确性、可用性及性能的一种测试方法。在UI自动化测试中通过使用专门的工具和编程语言对UI界面进行自动化操作从而可以提高测试的效率、降低测试成本并减少错误率。UI自动化测试通常用于GUI应用程序、Web应用程序及移动应用程序等的测试。02主流框架的认识最常用的开源UI自动化框架之一支持多种编程语言可用于测试Web应用程序、移动应用程序和桌面应用程序。Appium一个开源的移动应用程序自动化框架可用于测试iOS和Android应用程序支持多种编程语言。Playwright;是一款跨浏览器的UI自动化工具它具有卓越的性能、可靠性和灵活性支持多种浏览器和平台。Telerik Test Studio可用于测试Web应用程序和桌面应用程序支持多种编程语言包括C#、VB.NET和Java。selenium与playwright底层运行原理Selenium底层运行的原理是使用WebDriver来控制浏览器的行为实现自动化测试或者网站自动化操作。WebDriver是一个接口实现了控制不同浏览器的行为。同时WebDriver也提供了很多操作浏览器的API如查找元素模拟键盘和鼠标操作等。 Playwright 是由 Microsoft 开发的一个新型的自动化测试工具其底层原理与 Selenium 有所不同。Playwright 采用的是“模拟器”模式可以在浏览器内核的基础上进行更深层次的模拟操作。具体来说Playwright 采用的是 Chromium 调试协议通过发送与浏览器交互的命令模拟用户的操作。因此Playwright 在测试效率、稳定性和功能性方面均优于 Selenium。同时Playwright 还能够同时操作多个浏览器进行多端测试。适合自动化的项目长期的。短期几天的不合适稳定。临时搞活动不适合规范的。有文档设计规范。接口文档需求文档。重复的。代码相关代码适合做重复工作03 环境安装1、优先安装python环境2、安装playwrightpip install playwright3、安装Playwright库和浏览器引擎playwright install4、开启录制playwright codegen04 PLAYWRIGHT基本操作1.1. playwright浏览器基本操作# 打开chrome浏览器,headlessFalse 非无头模式,最大化browser sync_playwright().start().chromium.launch(headlessFalse, args[--start-maximized]) # 创建新页面page browser.new_page() # goto打开指定网址page.goto(https://www.baidu.com)page.reload() # 刷新page.go_forward() # 前进page.go_back() # 后退page.close() # 关闭窗口browser.close()# 关闭浏览器简单小例子1.2.playwright元素定位playwright推荐使用定位器也就是locators定位器是自动等待与重试的核心能力。更符合用户行为的定位器。这些是推荐的内置定位器l page.get_by_role()通过显式和隐式可访问性属性定位。l page.get_by_text()按文本内容定位。l page.get_by_label()通过关联标签的文本查找表单控件。l page.get_by_placeholder()按占位符查找输入。l page.get_by_alt_text()通过其文本替代品定位元素通常是图像。l page.get_by_title()通过标题属性定位元素。l page.get_by_test_id()根据其data-testid属性定位元素可以配置其他属性。除了以上这些selenium的8种by元素定位如id、xpath、css、等都可使用还有W3C标准规定的webDriver协议为5种定位方式CSS、Link text、Partial link text、Tag name、XPathplaywright把这些定位归类成3种分别是css、xpath、text如1.3.playwright元素操作Ø 下拉选择框selectOpion、value、labei、indexØ 文件上传setInputFiles、单个文件、多个文件、拖放上传Ø 鼠标点击click、dbclickØ 鼠标拖动down、upØ 鼠标移动moveØ 触摸屏幕tagØ 键盘按键pressØ 截屏、录屏screenshot、recordVideo1.4.Playwright 等待方式强制等待time.sleep()全局限制每一个元素无论有没有查找到都要在指定时间过后进行下一个等待元素出现: page.waitForSelector(#selector)等待元素消失: page.waitForSelector(#selector, { state: hidden })指定等待时间page.wait_for_timeout(5000): 等待指定的时间毫秒启动浏览器时可设置等待时间未设置则默认等待时间30sbrowser playwright.chromium.launch({timeout: 30000}) // 设置超时时间为30秒page.evaluate(js_pha) --执行js语句1.5.Playwright 窗口和iframe切换page.expect_popup()是Playwright中的一个方法它会等待新的浏览器弹出窗口的出现并返回一个新页面的实例。如果在给定的时间内未找到任何新弹出窗口则抛出一个错误。iframe切换在网页当中应用得非常广泛尤其是页面比较复杂的情况需要单独设置一个独立的边框或者是栏目。通过iframe的id进入对应的iframe页面然后操作page.frame_locator(#YSF-IFRAME-LAYER)1.6.Playwright 断言05自动化常见问题汇总1.UI自动化测试是否需要连接数据库校验不需要按照测试金字塔层最上层UI层中间层API接口层最底层单元测试层可以早AIP接口层做数据库校验UI层只需要模拟用户操作2.UI自动测试用例如何设计UI自动化用例从手工用例中提取出来的更加注重测试用例的严谨性应该遵循以下原则1.优先选取覆盖产品核心功能的用例2.从成本上考量不要选择流程过于复杂的用例3.选取的用例可以是重复执行繁琐的部分4.优先实行正向的测试用例反向用例一般情况复杂数量多3.如何提高UI自动化脚本的稳定性1.尽量用相对路径xpath表达式2.查找元素优先使用显示等待非全局查找3.用例与用例之间尽量避免产生依赖用例可以单独执行4.用例执行结束后对测试场景进行还原避免影响其他用例执行5.脚本执行失败后加入重试机制提高用例的稳定性6.尽量保证单独的测试环境避免其他测试同步进行4.如何提高UI自动化脚本的可维护性1、po分层模式业务和页面元素的分离2、测试数据和用例的分离单独维护测试数据3、页面和用例共性提取4、可追溯日志5.自动化实现困难的地方1、需求经常变动脚本维护成本较高2、特殊元素难定位3、脚本执行不稳定经常fail最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学站这些资料希望能给你前进的路上带来帮助。视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。