/ /#<Object:0x007fe29cb4c798>の未定義メソッド `visit_page '(NoMethodError)-ruby、cucumber、bundle、rubymine、page-object-gem

#<Object:0x007fe29cb4c798>(NoMethodError) - ruby​​、cucumber、bundler、rubymine、page-object-gemのための未定義メソッド `visit_page '

現在の問題は、コマンドラインからテストを実行する場合にのみ発生します。 RubyMineからスクリプトを実行する場合、問題はありません。コマンドラインからは次のようになります。

cucumber features / regression / createCloudUser.feature -r features / step_definitions / -r lib /

実行:

Feature: User pages Creation
Add user to system

Background:                   # features/regression/createUser.feature:4
Given you are in Cloud Staging # features/step_definitions/is_given_steps.rb:5
undefined method `visit_page" for #<Object:0x007fe29cb4c798> (NoMethodError)
./features/step_definitions/old_pages.rb:10:in `/^you are accessing User Page$/"

次のページを指します。

#is_given_steps.rb
When(/^you are accessing User Page$/) do
defined? $base_url
#pry
visit_page CreateCustomerPage   #Error is on this line unsure why?
end

ここにクラスがあります:

require "fig_newton"
require "page-object"

class CreateCustomerPage
include PageObject
include DataMagic

page_url "https://#{FigNewton.site_url}/admin/users/new"

text_field(:first_name, :id => "user_first_name")
text_field(:last_name, :id => "user_last_name")
text_field(:user_email, :id => "user_email")

button(:create_customer, :name => "commit")
button(:cancel, :name => "button")


def customerIsCreated
raise "User Not Created" unless browser.text.include?("#{FigNewton.customer_created.to_s.strip}")
return true
end

def customerIsNotCreated
raise "User was Created" unless browser.text.include?("#{FigNewton.customer_no_created.to_s.strip}")
return true
end

def complete_user_creation (data = { })
populate_page_with data_for(:create_user, data)

create_customer
end

end

プロジェクトは次のように設定されます。

TestProj-|
|--Config
|--Feature
|--Regression
|-- *.features
|--step_definitions
|-- is_given_steps.rb
|--support
|-- env.rb
|--lib
|---pages
|--Common
|--IS
|--*.* (other files)
|-- CreateCustomerPage.rb

env.rbを追加しました

#env.rb
#ADDED THIS AS TEST
$: << File.dirname(__FILE__)+"/../../lib"

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "../../", "lib"))

require "rspec-expectations"
require "page-object"
require "selenium-webdriver"
require "fig_newton"
require "data_magic"
require "require_all"
require "time"
require "date"
require "yaml"
require "fileutils"
require "aws-sdk"

require_all "lib"


$base_url = FigNewton.sys_url #used to parse a separate Url


World(PageObject::PageFactory)

visit_pageがそのページでエラーをスローする理由はわかりません。 Rubymineから実行すると問題はなく、テストは正常に実行されます。助けてください。

回答:

回答№1は2

あなたが手動でフォルダを必要としているので、私の推測では、あなたが含まれているフォルダを必要としないことです env.rb.

プロジェクトのセットアップを考えると、 env.rb の中に support フォルダ。 Cucumberコマンドにこれに対するrequireを含める必要があります-すなわち -r features/support

cucumber features/regression/createCloudUser.feature -r features/step_definitions/ -r lib/ -r features/support

回答№2の場合は0

このエラー

#(NoMethodError)の未定義メソッド「visit_page」

は、visit_pageが存在するページを初期化していないことを意味します。 POMを実行している場合、必要な場合があります。そのステップが存在する場合は、次のようにする必要があります。

Given $/You are in Cloud Staging$/ do
@page = SomePage.new(@test_env) // initialize new object where method lives
@page.visit_page
end