【问题标题】:How do we handle navigation between pages in a Page object Model test framework我们如何处理页面对象模型测试框架中页面之间的导航
【发布时间】:2015-12-15 11:08:56
【问题描述】:
我正在使用带有 ruby 的 BDD Cucumber 框架来测试网站。我正在遵循页面对象模型模式。每个页面都有一个不同的类及其元素和功能,每个页面都有一个单独的功能文件,其中包含与该页面相关的场景。
我对 POM 结构很陌生,有一个疑问:
现在,如果我想要一个涉及从主页开始、浏览菜单/子菜单并最终到达网站的某个 Page1 的场景,我想通过 url 或标题。
我应该将这样的场景放在 home_page.feature 还是 page_1.feature 中?
如果我从 Home Page 开始,显然我的 @page 变量将与 Home Page 一起加载,所以我应该何时何地更改它 Page1,因为我需要 Page1 元素来验证最后一步(一个 url,标题或图片等,我在第 1 页)
人们通常如何使用 POM 框架围绕导航构建测试?
【问题讨论】:
标签:
ruby
navigation
cucumber
bdd
pageobjects
【解决方案1】:
我们创建了包含<MENU> 和子菜单链接的导航功能文件来回答您的第一个问题。
//验证所有链接是否存在
Feature : verify all submenu links
Given as user I logs in "http://stackoverflow.com/
When I click on menu "<StackExchange>"
Then I able to see following submenu link"<Meta Stack Overflow,Stack overFlow Careers>"
这是我们现在用于导航的结构构想
【解决方案2】:
您可以通过页面名称和值来浏览页面,不同的值可能意味着不同的页面。
# Given I am on page users board
Given /^I am on page ?(.+)?$/ do |page_name|
case page_name
when 'homepage'
visit root_path
when 'users board'
visit users_path
when 'products board'
visit product_path
else
raise "Missing mapping for '#{page_name}' page."
end
end
如果未定义页面名称,它将引发Missing mapping for '#{page_name}' page. 异常。
在此article 中查找使用黄瓜测试的其他方法。