Ruby on rails 一旦用户使用我的cucumber测试登录,Poltergeist似乎就会崩溃

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

我正在尝试使用cucumber、capybara和poltergeist测试一个功能,它需要接受确认对话才能删除用户。尽管其他测试可以使用capybara驱动程序导航到用户页面,但使用Javascript测试,poltergeist似乎会让用户登录,然后停止工作

我尝试过使用xpath并在它出现在欢迎页面上时单击链接,但这些都不起作用

以下是我得到的错误:

当我选择要删除功能的用户/步骤定义/编辑用户时。rb:37 找不到xpath//a[@href='/users/2?page=1'和@data confirm='you sure?']Capybara::ElementNotFound

请记住,发生此错误的原因是恶鬼从未真正到达用户页面

以下是功能步骤:

#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

以下是调试的输出: