Ruby on rails 一旦用户使用我的cucumber测试登录,Poltergeist似乎就会崩溃
我正在尝试使用cucumber、capybara和poltergeist测试一个功能,它需要接受确认对话才能删除用户。尽管其他测试可以使用capybara驱动程序导航到用户页面,但使用Javascript测试,poltergeist似乎会让用户登录,然后停止工作 我尝试过使用xpath并在它出现在欢迎页面上时单击链接,但这些都不起作用 以下是我得到的错误: 当我选择要删除功能的用户/步骤定义/编辑用户时。rb:37 找不到xpath//a[@href='/users/2?page=1'和@data confirm='you sure?']Capybara::ElementNotFound 请记住,发生此错误的原因是恶鬼从未真正到达用户页面 以下是功能步骤:Ruby on rails 一旦用户使用我的cucumber测试登录,Poltergeist似乎就会崩溃,ruby-on-rails,cucumber,capybara,poltergeist,Ruby On Rails,Cucumber,Capybara,Poltergeist,我正在尝试使用cucumber、capybara和poltergeist测试一个功能,它需要接受确认对话才能删除用户。尽管其他测试可以使用capybara驱动程序导航到用户页面,但使用Javascript测试,poltergeist似乎会让用户登录,然后停止工作 我尝试过使用xpath并在它出现在欢迎页面上时单击链接,但这些都不起作用 以下是我得到的错误: 当我选择要删除功能的用户/步骤定义/编辑用户时。rb:37 找不到xpath//a[@href='/users/2?page=1'和@dat
#Feature: Delete User, Scenario: User successfully deletes another user
Given /^I am currently on the Users page to delete$/ do
open_page "Users"
end
When /^I select a user to delete$/ do
find(:xpath,'//a[@href="/users"]').trigger('click')
save_and_open_page
#page.evaluate_script('window.confirm = function() { return true; }')
find(:xpath, "//a[@href='/users/2?page=1' and @data-confirm='Are you sure?']").click
end
And /^I confirm that I would like to delete the selected user$/ do
page.driver.browser.switch_to.alert.accept
end
Then /^the user should no longer visible on the users page$/ do
expect(page).to have_no_content "cwl0@aber.ac.uk"
end
以下是helper_方法文件:
# Helper Methods
def create_user
@user = User.new
end
def submit_user_details (login, password)
visit new_session_path
fill_in "login-input", :with => login
fill_in "password", :with => password
click_button "submit_login"
end
def is_guest_page
expect(page).to have_content "Welcome Guest"
end
def is_admin_page
expect(page).to have_content "Welcome admin"
end
def check_test_email
exists = false
test_email = "bd55@aber.ac.uk"
if User.exists?(:email => test_email)
exists = true
end
exists
end
def open_page (page)
submit_user_details "admin", "taliesin"
click_link page
end
以下是功能文件:
Feature: Delete User
In order to remove an exisiting user
As a user
I want to be able to remove a user from the database
@javascript
Scenario: User successfully deletes another user
Given I am currently on the Users page to delete
When I select a user to delete
And I confirm that I would like to delete the selected user
Then the user should no longer visible on the users page
以下是env.rb:
require 'cucumber/rails'
require 'capybara/rails'
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app,
:phantomjs_options => ['--debug=no', '--load-images=no', '--ignore-ssl-errors=yes', '-- ssl-protocol=TLSv1'], :debug => false)
end
Dir["../../spec/factories/*.rb"].each {|file| require_relative file }
ActionController::Base.allow_rescue = false
# Remove/comment out the lines below if your app doesn't have a database.
# For some databases (like MongoDB and CouchDB) you may need to use :truncation instead.
begin
DatabaseCleaner.strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
Before do
DatabaseCleaner.start
load Rails.root.join('db/seeds.rb')
end
After do |scenario|
DatabaseCleaner.clean
end
Cucumber::Rails::Database.javascript_strategy = :truncation
以下是我的GEM文件的测试部分:
group :test do
gem 'cucumber-rails', :require => false
gem 'poltergeist', '~> 1.5.1'
gem 'phantomjs', :require => 'phantomjs/poltergeist'
gem 'selenium-webdriver'
gem 'launchy'
gem 'database_cleaner'
gem 'rspec-rails', '~> 3.0.0'
gem 'factory_girl_rails'
end
以下是调试的输出: