page-object新手入门:5个步骤掌握text_field与button基础操作

page-object新手入门:5个步骤掌握text_field与button基础操作 page-object新手入门5个步骤掌握text_field与button基础操作【免费下载链接】page-objectGem to implement PageObject pattern in watir-webdriver and selenium-webdriver项目地址: https://gitcode.com/gh_mirrors/pa/page-objectpage-object 是一个基于 Ruby 的 PageObject 设计模式实现库能够同时驱动 watir-webdriver 与 selenium-webdriver 完成自动化测试。对新手来说最先要掌握的就是 text_field 输入框与 button 按钮这两类最常用的页面元素。本文用 5 个步骤带你从零搭建环境到写出第一个可运行的登录测试脚本全程零基础可上手。第1步安装 page-object 并准备测试环境page-object 以 Gem 形式发布安装方式非常简单。先在项目目录创建 Gemfilesource https://rubygems.org gem page-object gem selenium-webdriver # 或 watir-webdriver然后执行bundle install完成安装。安装后新建一个 Ruby 文件引入 page-object 并启动浏览器require page-object browser Watir::Browser.new :chrome # 使用 watir # browser Selenium::WebDriver.for :chrome # 使用 selenium小提示page-object 对两种驱动器的 API 做了统一封装测试代码几乎不用改动这正是指令式测试脚本最看重的兼容性优势。第2步用 text_field 声明输入框在页面对象类中通过text_field方法即可声明一个输入框。以最常见的登录页为例class LoginPage include PageObject text_field :username, id: username text_field :password, id: password end声明之后page-object 会自动为每个输入框生成 4 个方法源码见 accessors.rb生成的方法作用username读取当前输入框的值username向输入框输入文字username_element返回输入框元素对象username?判断输入框是否存在实际使用效果非常直观page LoginPage.new(browser) page.username cheezy # 输入用户名 page.password secret # 输入密码 puts page.username # 输出 cheezy其中text_field还支持:password类型密码框同样可用上述全部方法无需额外处理。第3步用 button 声明按钮并触发点击按钮的声明方式与输入框几乎一模一样。回到登录页加上登录按钮class LoginPage include PageObject text_field :username, id: username text_field :password, id: password button :login, id: login_button endbutton声明后同样会生成对应方法源码见 accessors.rbpage.login # 点击登录按钮最常用 page.login? # 判断按钮是否存在 page.login_element # 获取按钮元素对象page-object 对按钮类型做了自动映射submit、reset、image、button四种 type 都会解析为 Button 元素见 button.rb所以无论按钮是input typesubmit还是button标签都能用统一方式操作。第4步组合成完整登录测试场景把前面三步串起来就能写出第一个完整的自动化测试class LoginPage include PageObject text_field :username, id: username text_field :password, id: password button :login, id: login_button end class HomePage include PageObject div :welcome_message, id: welcome end # 测试执行 login LoginPage.new(browser) login.navigate_to http://example.com/login login.username cheezy login.password secret login.login home HomePage.new(browser) puts home.welcome_message # 验证登录成功 puts home.welcome_message_element.visible? # 验证元素可见这样页面上的元素细节被完全封装在页面对象内部测试脚本只关心业务操作页面结构变动时只需修改一处维护成本大幅降低。第5步掌握元素定位与等待技巧实际项目中元素往往没有理想的 idpage-object 支持多种定位方式包括id、name、class、xpath、css、index等还可以组合使用text_field :username, name: user_name # 按 name 定位 button :login, class: btn-primary, index: 0 # 多个参数组合对于异步加载的页面推荐使用when_present等待元素出现见 element.rb避免元素尚未渲染就点击导致报错login.login_element.when_present.click login.username_element.when_present.value cheezy此外*_element返回的元素对象还支持value、clear、append、visible?、exists?等常用操作足以覆盖日常绝大多数交互场景。结语你的下一步到这里你已经用 5 个步骤完成了 page-object 最核心的 text_field 与 button 基础操作安装环境、声明输入框、声明按钮、组合场景、处理定位与等待。接下来可以继续探索 select_list、checkbox、table 等更多元素类型也可以结合 Cucumber 编写行为驱动测试。如果想深入了解每个方法的完整用法可以阅读项目源码中的 accessors.rb 和 text_field.rb或者参考仓库中现成的 Cucumber 测试示例如 features/button.feature照着跑一遍就是最好的学习方式。现在打开编辑器动手写出你的第一个登录测试吧【免费下载链接】page-objectGem to implement PageObject pattern in watir-webdriver and selenium-webdriver项目地址: https://gitcode.com/gh_mirrors/pa/page-object创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考