可以在 Cucumber 之外使用页面对象吗?
Can page-object be used outside of Cucumber?
我想了解页面对象 gem 与 Cucumber 的确切联系。
页面工厂暴露给Cucumbers world,允许使用on / visit in steps,但这好像是没有Cucumber也能暴露的东西。
页面对象所依赖的@browser 变量是在 Cucumber 的 before_suite 或 before_scenario 上下文中创建的,但这也可以在没有 Cucumber 的情况下创建。
这 gem 是否真的与 Cucumber 相关联?
是的。页面对象 gem 可以在 Cucumber 之外使用。
这是一个如何将其与 RSpec 一起使用的示例。
$树
├── Gemfile
├── spec
│ ├── my_app
│ │ └── search_spec.rb
│ ├── pages
│ │ ├── article_page.rb
│ │ └── index_page.rb
│ └── spec_helper.rb
宝石文件
source "https://rubygems.org"
gem 'rspec'
gem 'page-object'
spec_helper.rb
require 'page-object'
Dir["#{File.dirname(__FILE__)}/pages/*_page.rb"].each { |file| require file }
RSpec.configure do |config|
config.include PageObject::PageFactory
config.before do
@browser = Watir::Browser.new :firefox
end
config.after do
@browser.close
end
end
search_spec.rb
require 'spec_helper'
describe 'Search field' do
it 'searches an article' do
visit(IndexPage) do |page|
page.search = 'Ruby'
page.submit_search
end
expect(on(ArticlePage).main_header).to eq('Ruby')
end
end
article_page.rb
class ArticlePage
include PageObject
h1(:main_header)
end
index_page.rb
class IndexPage
include PageObject
page_url 'https://www.wikipedia.org'
text_field(:search, id: 'searchInput')
button(:submit_search)
end
如 rubygems.org PageObject gem has only development dependency on Cucumber. It doesnt need cucumber for implementation. A precise explanation of difference between runtime and development dependencies is given here 所述。
出于执行目的,Cucumber 查找步骤定义。将 Page Factory 传递给 World 为 Cucumber 添加了 PageObject 功能。我唯一能想到的将 PageObject 绑定到 Cucumber 的是它的单元测试。 Evmorov 已经给出了一个很好的解决方案,可以单独使用 Rspec。
我想了解页面对象 gem 与 Cucumber 的确切联系。
页面工厂暴露给Cucumbers world,允许使用on / visit in steps,但这好像是没有Cucumber也能暴露的东西。
页面对象所依赖的@browser 变量是在 Cucumber 的 before_suite 或 before_scenario 上下文中创建的,但这也可以在没有 Cucumber 的情况下创建。
这 gem 是否真的与 Cucumber 相关联?
是的。页面对象 gem 可以在 Cucumber 之外使用。
这是一个如何将其与 RSpec 一起使用的示例。
$树
├── Gemfile
├── spec
│ ├── my_app
│ │ └── search_spec.rb
│ ├── pages
│ │ ├── article_page.rb
│ │ └── index_page.rb
│ └── spec_helper.rb
宝石文件
source "https://rubygems.org"
gem 'rspec'
gem 'page-object'
spec_helper.rb
require 'page-object'
Dir["#{File.dirname(__FILE__)}/pages/*_page.rb"].each { |file| require file }
RSpec.configure do |config|
config.include PageObject::PageFactory
config.before do
@browser = Watir::Browser.new :firefox
end
config.after do
@browser.close
end
end
search_spec.rb
require 'spec_helper'
describe 'Search field' do
it 'searches an article' do
visit(IndexPage) do |page|
page.search = 'Ruby'
page.submit_search
end
expect(on(ArticlePage).main_header).to eq('Ruby')
end
end
article_page.rb
class ArticlePage
include PageObject
h1(:main_header)
end
index_page.rb
class IndexPage
include PageObject
page_url 'https://www.wikipedia.org'
text_field(:search, id: 'searchInput')
button(:submit_search)
end
如 rubygems.org PageObject gem has only development dependency on Cucumber. It doesnt need cucumber for implementation. A precise explanation of difference between runtime and development dependencies is given here 所述。
出于执行目的,Cucumber 查找步骤定义。将 Page Factory 传递给 World 为 Cucumber 添加了 PageObject 功能。我唯一能想到的将 PageObject 绑定到 Cucumber 的是它的单元测试。 Evmorov 已经给出了一个很好的解决方案,可以单独使用 Rspec。