Ruby on Rails无法加载此类文件 - selenium-webdriver错误

MrA*_*oIt 6 phantomjs selenium-webdriver ruby-on-rails-4

我正在测试使用Ruby on Rails中的phantomjs运行selenium webdriver.我在我的电脑上进行本地测试.

当我运行"ruby test.rb"时,以下代码在我的测试Ruby脚本中运行正常

  def google_title
    require 'selenium-webdriver'
    driver = Selenium::WebDriver.for :phantomjs
    driver.navigate.to "https://www.google.com"
    page_title = driver.title
    puts page_title
  end

  google_title
Run Code Online (Sandbox Code Playgroud)

我在application_controller.rb文件中有相同的代码:

  def google_title
    require 'selenium-webdriver'
    driver = Selenium::WebDriver.for :phantomjs
    driver.navigate.to "https://www.google.com"
    page_title = driver.title
    render text: page_title
  end
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的应用程序时,我得到一个"无法加载此类文件 - selenium-webdriver"错误.

在此输入图像描述

我已将此添加到我的Gemfile并运行bundle install但得到相同的错误.

gem 'selenium-webdriver', '~> 2.45'
Run Code Online (Sandbox Code Playgroud)

当我运行gem list --local时,它会显示selenium已安装.

任何帮助,将不胜感激.

更新:

我运行几乎完全相同的代码,但使用watir-webdriver并获得相同的结果.Ruby脚本运行正常,但当我试图从Rails运行时,为watir-webdriver提供了"无法加载此类文件"错误.

我用nokogiri进行了另一次测试,效果很好.它既是自我又是Rails.

UPDATE2:

它似乎是我正在做的事情,而不是我的测试环境.我刚刚在在线IDE上运行相同的代码并得到了相同类型的错误:

在此输入图像描述

UPDATE3:

以下是使用watir-webdriver和headless运行测试时application_controller.rb文件的完整内容.我得到了相同的结果.也许我在这里设置错了?

class ApplicationController < ActionController::Base
  def google_title
    require 'watir-webdriver'
    require 'headless'
    headless = Headless.new
    headless.start
    b = Watir::Browser.start 'www.google.com'
    page_title = b.title
    b.close
    headless.destroy
    render text: page_title
  end
end
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

小智 0

您是否重新启动了 webrick、puma ...服务器?

奇迹般有效。

gem 'selenium-webdriver', '~> 2.45'

bundle install

在苹果机上:

brew install phantomjs

class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception
  #no need for require
  def google_title
    driver = Selenium::WebDriver.for :phantomjs
    driver.navigate.to "https://www.google.com"
    page_title = driver.title
    render text: page_title
  end
end
Run Code Online (Sandbox Code Playgroud)

路线.rb:

get 'google-title' => 'application#google_title'

http://127.0.0.1:3000/google-title
Run Code Online (Sandbox Code Playgroud)

结果谷歌