0

我正在尝试执行一个脚本来测试一些用户凭据,并且我不断收到与“要求”相关的错误。该脚本获取用户名和密码的 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': no such file to load -- selenium-webdriver (LoadError) from xxxxx.rb:1

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

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:308:in 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:inopen'来自/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/ lib/ruby/1.8/csv.rb:308:in open_reader' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:94:inforeach'

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

4

5 回答 5

0

您需要先安装 gems,然后才能使用它们。例如,selenium-webdriver gem 可以在这里找到 Selenium WebDriver

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

于 2012-08-28T18:57:56.490 回答
0
  1. 如果之间没有空格,test credentials.csv则将其删除。检查是否存在 _
  2. 如果之间有空格,test credentials.csv则在代码中写入文件名,如下所示in_file = File.open("test\ credentials.csv", 'r')
于 2013-07-19T13:32:21.530 回答
0

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

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

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

于 2012-08-31T16:38:53.520 回答
0

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

于 2015-02-18T01:09:24.750 回答
0

请试试这个。

宝石更新--系统

于 2016-06-02T13:25:17.967 回答