我正在测试使用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 …Run Code Online (Sandbox Code Playgroud) 我将我的Rails应用程序从4.2.5升级到5.0.6.现在Mail邮件不会发送电子邮件.我似乎没有得到错误.我将Mail gem更新为最新版本但没有运气.我不知道还有什么可以尝试的.
我在跑步:
Rails 5.0.6
Ruby 2.3.0
邮件2.7.0
控制器/ send_email.rb
class SendEmail < ApplicationController
def initialize(to_address, from_address, email_pass, subject, body)
begin
options = {
:address => 'abc.prod.1234.secureserver.net',
:port => '465',
:domain => 'mydomain.com',
:user_name => from_address,
:password => email_pass,
:authentication => :login,
:ssl => true,
:openssl_verify_mode => 'none'
}
Mail.defaults do
delivery_method :smtp, options
end
Mail.deliver do
to to_address
from from_address
subject subject
body body
end
puts("\nSent message. From: #{from_address} To: #{to_address} \nMessage body: \n#{body}")
return …Run Code Online (Sandbox Code Playgroud) 我有两个有数千个元素的数组.我需要通过将它与另一个数组进行比较来找到一个数组中缺少的元素.有没有办法在不迭代整个数组的情况下获取缺失的元素?或者有什么比我正在做的更快?
这是我现在使用的:
def find_missing(array1, array2)
missing_elements = []
array1.each { |e|
unless array2.include? e
missing_elements << e
end
}
return missing_elements
end
array1 = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
array2 = [1, 2, 4, 5, 6, 7, 9]
puts find_missing(array1, array2)
Run Code Online (Sandbox Code Playgroud)