我可以用 PageObject::PageFactory 不加黄瓜吗?

Can I use PageObject::PageFactory without cucumber?

我想知道是否可以在没有黄瓜的情况下使用 PageObject::PageFactory。我试过

World(PageObject::PageFactory)

但是没有黄瓜就没有世界。我找不到另一种方式的示例。

我为什么要做那么疯狂的事情?我想创建一个 gem,测试人员可以下载它来针对我们测试的产品使用。我喜欢 cukes,但我也希望将其用于探索性测试。我已经在其余端点上成功地做到了这一点。

我知道我可以在没有 PageFactory 的情况下做到这一点,但是以这种方式使用 PageObject 感觉就像我在作弊一样简单。我想使用这些模式。

visit(NewAccountPage)
on(NewAccountPage).create_account

也许完全有另一种方法?

是的,你可以。您需要做两件事:

  1. 在要使用visiton等方法的对象中包含PageObject::PageFactory。 (这就是 Cucumber 的 World 方法所做的。)
  2. Watir::Browser 对象定义一个 @browser 变量。

下面是一个使用PageFactory的例子:

require 'watir-webdriver'
require 'page-object'

# A page object
class GooglePage
  include PageObject

  page_url 'http://www.google.com'
end

# Including the page factory methods in the main
include PageObject::PageFactory

# Assign a browser to @browser
@browser = Watir::Browser.new :chrome

# Using the page factory
visit(GooglePage)

p on(GooglePage).current_url
#=> "https://www.google.ca/?gfe_rd=cr&ei=UxfbVdnCAaeD8QeM96CACg&gws_rd=ssl"