使用Selenium webdriver脚本发生Ruby’require’错误

我正在尝试执行一个脚本来测试一些用户凭据,并且我一直收到与’require’相关的错误。 该脚本获取用户名和密码的csv,将它们记录到站点中,并将它们分组为通过/失败列表。

我承认我没有写剧本 – 它是由外部编码人员提供给我们的。 我已经学习了几个CS101课程,并且可以解析它正在做的事情并为不同的域和凭证文件修改它,但我是一个完全ruby的初学者。

=========================

require 'selenium-webdriver' require 'rubygems' require 'csv' pass_file = File.open('pass.txt', 'w') fail_file = File.open('fail.txt', 'w') in_file = File.open('test credentials.csv', 'r') pass_file.puts "xxxxxx" fail_file.puts "xxxxxx" CSV.foreach(in_file, :col_sep => ',') do |row| driver = Selenium::WebDriver.for :firefox driver.get 'https://www.xxxxxx.com/' driver.find_element(:id => 'UserNameEntry').send_keys row[0] driver.find_element(:id => 'UserPasswordEntry').send_keys row[1] driver.find_element(:id => 'xxxxxxlNameEntry').clear driver.find_element(:id => 'xxxxxxNameEntry').send_keys "xxxxxx" driver.find_element(:xpath => '//*[@id="cmdLoginButton"]/span').click driver.switch_to.window(driver.window_handles[1]) if driver.title == "Welcome!" pass_file.puts row[0] elsif driver.title == "Login Unsuccessful" fail_file.puts row[0] end driver.quit end 

==================

当我运行它时,起初我得到“`require’:没有这样的文件加载 – 来自xxxxx.rb的selenium-webdriver(LoadError):1

然后我在一个论坛上看到gem的要求应该是第一位的。 在要求’selenium-webdriver’之前放置require’rubygems’后,现在我收到此错误:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:308: initialize': can't convert File into String (TypeError) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:308:in open’from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/ csv.rb:308:在open_reader' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:94:in foreach’

我感到很困惑……任何帮助都表示赞赏。

您需要在需要之前安装gem。 例如,selenium-webdriver gem可以在Selenium WebDriver中找到

您在终端程序中运行gem install selenium-webdriver

尝试从csv文件名中删除空格,例如:

 in_file = File.open('test_credentials.csv', 'r') 

正如我从stacktrace中看到的,读取csv文件时发生错误。

  1. 如果test credentials.csv之间没有空格,则删除它。 检查是否存在_存在
  2. 如果test credentials.csv之间有空格,则在代码中写入文件名,如下所示in_file = File.open("test\ credentials.csv", 'r')

如果使用Bundler,请在顶部添加require bundler/setup

请试试这个。

gem update –system