我目前正在使用Ruby、Watir网络驱动程序和Cucumber来创建一个自动化测试框架。我真的很喜欢页面对象样式的代码结构方式,但我的应用程序实际上并不经常更改页面(我正在尝试自动化Sitecore内容编辑器/页面编辑器)。我假设有一种方法可以将页面的大部分分离到自己的类中,然后在该类中定义方法。然而,如果我需要在同一个页面上做很多工作,我该如何使用页面对象gem和cucumber来调用这个类?
到目前为止,我知道如何做到这一点的唯一方法就是这样。
class Sitecore
include PageObject
page_url "http://website.com/"
include PageObject::PageFactory
# methods for a large portion A
# methods for a large portion B
...
# methods for a large portion Z
end
然后做一个类似这样的黄瓜测试。
Given(/^I am in the content editor$/) do
visit Sitecore do |page|
page.MethodA
page.MethodB
end
end
When(/^I navigate to some folder$/) do
on Sitecore do |page|
page.MethodC
page.MethodD
end
end
Then(/^I should see something present$/) do
on Sitecore do |page|
page.MethodE
end
end
这些都使用同一个类,所以很容易。我只是使用访问和关键字。但是,如果我要将其更改为多个类,我如何在不实际更改页面的情况下调用这些类?
你的问题有点令人困惑,你在找这个吗:
Given(/^I am in the content editor$/) do
page = Sitecore.new
page.goto(page_url)
end
When(/^I navigate to some folder$/) do
page.MethodC
page.MethodD
end
Then(/^I should see something present$/) do
page.MethodE
end