如何在不更改页面的 Web 应用程序中使用页面对象样式自动化测试

How to use page-object style automation test inside a web application that doesn't change pages

我目前正在使用 Ruby、Watir-webdriver 和 Cucumber 来创建自动化测试框架。我真的很喜欢页面对象样式结构代码的方式,但我的应用程序实际上并不经常更改页面(我正在尝试自动化 Sitecore Content Editor/Page 编辑器)。我假设有一种方法可以将页面的大部分分成它自己的 class,然后在 class 中定义方法。但是,如果我需要在同一页面上做很多事情,我该如何使用页面对象 gem 和黄瓜来调用此 class?

到目前为止,我知道如何做到这一点的唯一方法就是这样。

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

然后像这样进行相应的Cucumber测试。

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

这些都使用相同的 class,所以很简单。我只是使用 visit 和 on 关键字。但是,如果我要将其更改为多个 classes,我该如何调用它们而不实际更改我所在的页面?

你的问题有点乱,你是不是在找这个:

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