十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

10分钟快速上手page-object:从安装到写出第一个页面对象

10分钟快速上手page-object:从安装到写出第一个页面对象 10分钟快速上手page-object从安装到写出第一个页面对象【免费下载链接】page-objectGem to implement PageObject pattern in watir-webdriver and selenium-webdriver项目地址: https://gitcode.com/gh_mirrors/pa/page-objectpage-object 是一个轻量级 Ruby Gem用于在 watir-webdriver 和 selenium-webdriver 中实现 PageObject 页面对象模式。它能把网页元素封装成清晰的页面对象让 UI 自动化测试与页面细节彻底解耦代码更易读、易维护。这篇 page-object 入门教程从环境安装到写出第一个页面对象全程只需 10 分钟。page-object 是什么为什么新手首选页面对象模式页面对象模式Page Object Pattern是 UI 自动化测试最经典的设计思想把每个页面抽象成一个类把页面上的输入框、按钮、链接等元素封装成类属性把用户操作封装成方法。这样测试脚本只关心做什么不关心元素在哪。page-object 将这一模式做成开箱即用的 Gem核心逻辑集中在 accessors.rb 和 element_locators.rb 中。只需一行include PageObject你的类就自动获得元素声明、页面跳转、标题校验等全套能力无需自己写底层封装。第一步一行命令完成 page-object 安装安装 page-object 非常简单前提是电脑上已有 Ruby 环境建议 2.4和浏览器驱动如 ChromeDrivergem install page-object安装完成后确认版本号即可page-object -v当前稳定版本为 2.3.1兼容 watir 与 selenium-webdriver 两种底层驱动具体依赖可查看 page-object.gemspec。如果你希望查看源码或贡献代码也可以克隆仓库https://gitcode.com/gh_mirrors/pa/page-object到本地研究。第二步写出你的第一个页面对象登录页示例以一个登录页为例。首先定义一个类并引入 PageObject 模块然后声明页面上的元素require page-object class LoginPage include PageObject text_field(:username, :id username) text_field(:password, :id password) button(:login, :id login) end看到这里你可能会问代码去哪了这正是 page-object 的魅力——声明text_field(:username)后它会自动生成username、username、username_element、username?四个方法分别对应取值、赋值、取元素、判断是否存在。这套元素访问器的生成逻辑实现在 accessors.rb 中支持 text_field、button、checkbox、select_list、table 等 30 多种常见元素。第三步用页面对象完成一次真实登录操作接下来把页面对象和真实浏览器连接起来。page-object 同时支持 watir 和 selenium-webdriver创建对象时传入哪个驱动就使用哪个browser Watir::Browser.new :chrome login_page LoginPage.new(browser) login_page.username cheezy login_page.password secret login_page.login短短几行就完成了一次完整的登录操作。如果觉得还是太底层还可以把操作再封装成业务方法def login_with(username, password) self.username username self.password password login end之后测试里只需一行login_page.login_with cheezy, secret。测试脚本从此不再关心页面细节改版时只需修改页面对象测试代码几乎不动——这就是页面对象模式最核心的价值。进阶技巧让 page-object 更高效的 3 个实用功能掌握了基础用法后这 3 个高频功能能让你的测试代码再上一个台阶1. 批量填充表单populate_page_with当表单字段很多时用 Hash 一次填充实现逻辑在 page_populator.rblogin_page.populate_page_with :username cheezy, :password secret2. 页面工厂visit_page/on_page用page_url声明页面地址后页面工厂会自动完成跳转与实例化并配合expected_title校验页面标题实现在 page_factory.rbclass HomePage include PageObject page_url http://example.com/home expected_title Home end visit_page HomePage3. 处理 iframe 嵌套页面面对嵌入的 iframe用in_iframe声明块内元素即可无需手动切换 frame 上下文。此外如果项目里有自定义组件page-object 还支持通过 widgets.rb 注册自定义控件类型让复杂组件也能像原生元素一样优雅使用。小结从安装到写出第一个页面对象page-object 全程只需 10 分钟。它用一个轻量模块解决了 UI 自动化测试中最常见的维护难题页面变了只改页面对象用例变了只改测试脚本。如果你正在使用 watir 或 selenium-webdriver 做测试强烈建议尝试用页面对象模式重构一次现有用例你会明显感受到代码可读性和维护性的提升。【免费下载链接】page-objectGem to implement PageObject pattern in watir-webdriver and selenium-webdriver项目地址: https://gitcode.com/gh_mirrors/pa/page-object创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表