ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

表单自动化全攻略:page-object搞定文本框、下拉框与文件上传

表单自动化全攻略:page-object搞定文本框、下拉框与文件上传 表单自动化全攻略page-object搞定文本框、下拉框与文件上传【免费下载链接】page-objectGem to implement PageObject pattern in watir-webdriver and selenium-webdriver项目地址: https://gitcode.com/gh_mirrors/pa/page-object表单自动化测试一直是UI自动化里最繁琐的环节填写文本框、切换下拉框、上传文件每一个步骤都可能让脚本变得冗长难维护。而 page-object 这款Ruby测试框架Gem正是为了解决这个痛点而生。它实现了经典的PageObject设计模式同一套代码即可驱动 watir-webdriver 和 selenium-webdriver让你用最简洁的DSL语句完成文本框、下拉框、文件上传等全部表单操作。本文将带你从零上手掌握这套表单自动化全攻略。为什么表单自动化首选 PageObject 模式很多新手写表单测试时喜欢在测试用例里直接堆砌browser.text_field...这类底层操作结果页面一改版几十条用例集体爆红。PageObject模式的核心思想是把页面封装成对象把元素操作封装成方法测试代码只关心我要做什么不关心元素怎么找。page-object 正是这一模式的集大成者。你在类里声明一次元素它就自动生成读写、判断、获取元素等方法代码可读性和复用性直接拉满。核心实现可以参考 lib/page-object/accessors.rb 中的text_field、select_list、file_field等声明方法。最快配置方法三步完成环境搭建 ⚡安装使用非常简单在 Gemfile 中加入依赖后执行 bundle 即可gem page-object接着在页面类中引入模块并声明你关心的表单元素class LoginPage include PageObject text_field(:username, :id username) text_field(:password, :id password) select_list(:country, :id country) file_field(:avatar, :id avatar) button(:submit, :id submit) end最后创建页面对象开始操作支持 watir 和 selenium 两种驱动无需修改页面代码browser Watir::Browser.new :firefox page LoginPage.new(browser)page-object文本框操作填写与读取一学就会 ✍️文本框是表单里出现频率最高的元素声明text_field后会自动生成四个方法username读取值、username填入内容、username_element获取元素、username?判断存在。填表只需一行page.username 测试账号 puts page.username # 读取当前值无论是普通文本框、密码框还是 textarea 多行文本用法完全一致。text_field 在底层还同时映射了 password 类型密码框无需额外处理。对应实现见 lib/page-object/elements/text_field.rb。下拉框选择自动化按值还是按文本两个都要 下拉框select是表单自动化的重灾区很多人习惯用 XPath 硬点选项脆弱且难读。page-object 提供了一套完整的下拉框选择方法page.country CN # 按 value 属性选择 page.country 中国 # 按显示文本选择 page.country # 获取当前选中项 page.country_options # 获取全部选项文本底层SelectList类还封装了options、selected_options、selected_values等方法见 lib/page-object/elements/select_list.rb多选下拉框同样支持取回的是一个选项数组非常适合做断言校验。文件上传自动化一条赋值语句搞定 文件上传最让新手头疼——弹出系统文件对话框后selenium 根本控制不了原生窗口。page-object 的解法非常优雅直接对 file_field 赋值文件路径绕开对话框page.avatar /path/to/avatar.jpg一条语句完成上传无需任何键盘模拟或第三方工具。实现位于 lib/page-object/elements/file_field.rb同时兼容 watir 与 selenium 平台这是许多表单自动化框架做不到的。批量填充表单populate_page_with 一招制敌 如果表单有十几个字段逐个赋值依然繁琐。page-object 提供了populate_page_with方法用一个 Hash 瞬间填完整个表单见 lib/page-object/page_populator.rbpage.populate_page_with :username 张三, :country 中国, :avatar /tmp/resume.pdf它会自动识别元素类型文本框填值、下拉框选择、文件框传路径、复选框勾选/取消一次调用全部完成还自动跳过禁用元素特别适合测试数据驱动的场景。元素定位技巧多种方式精准锁定表单元素 元素声明支持 id、name、class、xpath、css、index 等多种定位方式还能组合使用。比如 features/html/static_elements.html 里的测试页面几乎每个元素都同时带有 id、name、class 属性你可以灵活选用text_field(:username, :xpath //input[nameuser]) select_list(:province, :css select#province select)框架内部通过 locator_generator 自动生成最合适的定位策略即使页面结构复杂也能稳定命中目标元素。写在最后让表单自动化从此轻松 ✨从文本框读写、下拉框选择到文件上传page-object 用一套简洁统一的 DSL 覆盖了表单自动化的全部高频场景。配合批量填充和多种定位方式你完全可以把精力从找元素转移到写业务上。项目自带完整的 Cucumber 场景示例见 features/form.feature包含大量可直接参考的实战用例动手跑一遍你的表单自动化技能就能快速上手。现在就把它加入你的测试工具箱吧【免费下载链接】page-objectGem to implement PageObject pattern in watir-webdriver and selenium-webdriver项目地址: https://gitcode.com/gh_mirrors/pa/page-object创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表