我对自动化测试相当陌生,我正在使用selenium-webdriver在Ruby中编写BDD自动化测试场景,在运行测试时,它们在第一步失败。(Tumblr仅作为一个例子(
此错误消息是什么意思,我该如何解决?任何帮助将不胜感激!
在我的功能文件中:
Feature: tumblr
@s1
Scenario: Logging in to Tumblr
Given I am on the Tumblr login page
When I enter my login details
Then I should be sent to the dashboard
在我的login_page.rb中:
def visit
@browser.goto "#{EnvConfig.base_url}/login"
await_on_page
end
在我的login_step_defs.rb中:
Given /^I am on the Odicci login page$/ do
@app.tumblr_login.visit
end
When /^I enter my login details$/ do
@app.tumblr_login.login
end
Then /^I should be sent to the dashboard$/ do
@app.tumblr_dashboard.go_to_dashboard
end
最初,当我运行"cucumber features.feature"时,但找不到步骤定义,因此场景以"未定义"结束,因此运行"cucumber features.feature -r step_definitions可以运行测试,但由于以下错误消息,它们失败了:
Scenario: Logging in to Tumblr # features.feature:4
Given I am on the Tumblr login page # step_definitions/login_step_defs.rb:2
undefined method `tumblr_login' for nil:NilClass (NoMethodError)
./step_definitions/login_step_defs.rb:3:in `/^I am on the Tumblr login page$/'
features.feature:5:in `Given I am on the Tumblr login page'
@maxpleaner
if ENV['HEADLESS']
require 'headless'
require 'selenium-webdriver'
headless = Headless.new display: '100'
headless.start
end
# Set up browser
# browser = Watir::Browser.new (ENV['BROWSER'] || 'chrome').to_sym
driver = Selenium::WebDriver.for :chrome
browser_type = ENV['BROWSER'] || 'chrome'
$setup_done = false
Before do |scenario|
@browser = browser
@app = App.new @browser
unless $setup_done
$setup_done = true
# This stuff will only run before the first scenario executed. Use it to set up data etc.
end
end
After do |scenario|
end
at_exit do
browser.quit
end