我正在使用带有ruby的BDD Cucumber框架来测试网站。我正在遵循页面对象模型模式。每个页面都有不同的类及其元素和功能,每个页面都有一个单独的功能文件,其中包含与该页面相关的场景。
我对POM结构很新并且有疑问:
现在,如果我想要有一个场景,包括从主页开始,浏览菜单/子菜单并最终到达网站的某个Page1,我想通过网址验证我在正确的页面上标题。
我应该在home_page.feature或page_1.feature中放置这样的场景吗?
如果我从主页开始,显然我的@page变量将加载主页,所以我应该在何时何地更改它Page1,因为我需要Page1元素来验证最后一步(一个网址,标题或图像等,我在Page1)
人们通常如何使用POM框架围绕导航构建测试?
答案 0 :(得分:0)
我们创建了导航功能文件,其中包含<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>"
这是我们现在用于导航的结构构思
如果点击主页,所有菜单都有预期的行为,而不是我在主页上。每个菜单返回预期对象,并使用该对象验证标题和预期元素。在这里,当我点击主页链接,它将返回HomePagePOM.class并使用此对象我可以验证页面
在Navigation类中,它将包含所有菜单和子菜单,并返回预期的对象。
答案 1 :(得分:0)
您可以按页面名称和值浏览页面,不同的值可能表示不同的页面。
let radius: CGFloat = 0.3
let height: CGFloat = 0.5
let color: UIColor = UIColor(red:0.17, green:0.62, blue:0.76, alpha:1.0)
let geometryTube = SCNTube(innerRadius: (radius - 0.1), outerRadius: radius, height: height)
let matOuter = SCNMaterial()
matOuter.diffuse.contents = color
matOuter.transparency = 0.1
let matInner = SCNMaterial()
matInner.diffuse.contents = color
matInner.transparency = 0.6
let matTop = SCNMaterial()
matTop.diffuse.contents = color
geometryTube.materials = [matOuter, matInner, matTop]
for index in 0...20 {
let node = SCNNode(geometry: geometryTube)
node.position = SCNVector3(1.0 + Double(index), -1.0, 0.0);
sceneView.scene.rootNode.addChildNode(node)
}
如果未定义页面名称,则会引发# 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
异常。
找出在article中使用黄瓜测试的其他方法。