Ruby 为什么我会得到一个不受支持的错误

Ruby 为什么我会得到一个不受支持的错误,ruby,mechanize,Ruby,Mechanize,我正在编写一个程序,它使用Mechanize从edline.net中使用学生帐户刮取学生的成绩和班级,并返回我需要的数据。然而,在登录后,我必须从主页访问一个链接(称为“私人报告”),该链接将动态返回一页指向每个学生班级和相应年级的链接 测试时,我创建了一个新对象my_account,该对象包含多个实例变量,包括主页。我将新变量指向实例变量,以便更易于阅读): result\u page=agent.page.链接(:text=>“私人报告”)。单击 我得到: Mechanize::不受支持的模

我正在编写一个程序,它使用Mechanize从edline.net中使用学生帐户刮取学生的成绩和班级,并返回我需要的数据。然而,在登录后,我必须从主页访问一个链接(称为“私人报告”),该链接将动态返回一页指向每个学生班级和相应年级的链接

测试时,我创建了一个新对象
my_account
,该对象包含多个实例变量,包括主页。我将新变量指向实例变量,以便更易于阅读):

result\u page=agent.page.链接(:text=>“私人报告”)。单击

我得到:

Mechanize::不受支持的模式错误

但是如果我将
:单击
:text
替换为
:text,它将正确响应,
结果页面
将等于链接的文本“私人报告”

为什么它正确响应
:text
,但给出了
:click的错误?有没有办法解决这个问题,或者我应该重新思考解决这个问题的方法

代码如下:

 class AccountFetcher

     EDLINE_LOGIN_URL = 'http://edline.net/Index.page'

     def self.fetch_form(agent)

         # uses @agent of an Account object
         page = agent.get(EDLINE_LOGIN_URL)
         form = page.form('authenticationEntryForm')
     end


     # edline's login form has to have several pre-conditions met before submitting the form

     def self.initialize_form(agent)
         form = AccountFetcher.fetch_form(agent)
         submit_event = form.field_with(:name => 'submitEvent')
         enter_clicked = form.field_with(:name => 'enterClicked')
         ajax_support = form.field_with(:name => 'ajaxSupported')
         ajax_support.value = 'yes'
         enter_clicked.value = true
         submit_event.value = 1
         return form 
     end


     # logs the user in and returns the homepage

     def self.fetch_homepage(u_username, u_password, agent)
         form = AccountFetcher.initialize_form(agent)
         username = form.field_with(:name => 'screenName')
         password = form.field_with(:name => 'kclq')
         username.value = u_username
         password.value = u_password
         form.submit
     end
 end

 # class Account will be expanded later on but here are the bare bones for a user to log in to their account 
 class Account

     attr_accessor :report, :agent, :username, :password
     def initialize(u_username, u_password)
         @agent = Mechanize.new
         @username = u_username
         @password = u_password
     end

     def login
         page = AccountFetcher.fetch_homepage(self.username, self.password, self.agent) 
         @report = page
     end
 end 


 my_account = Account.new('ex_username', 'ex_password')
 my_account.login
 page = my_account.report
 agent = my_account.agent

 page = agent.page.link_with(:text => 'Private Reports').click    

链接指向哪里?Ie,有什么问题吗


我问这个问题是因为“scheme”通常指http、https或ftp之类的东西,所以可能链接有一个奇怪的scheme,mechanize不知道如何处理,因此
mechanize::UnsupportedSchemeError

我也有同样的想法,但我发现该页面使用https协议,mechanize应该能够很好地处理,对吗@stoodfarbackI登录并尝试立即使用irb跟踪链接,而不是使用单独的类和各种方法,而是使用
Mechanize::UnsupportedSchemeError
我收到
NoMethodError:undefined method homepage
。主页是我正在寻找的网页上的链接只是一个更新@stoodfarback我浏览了这些网页,很多链接都使用javascript以及允许你“点击”它们的表单。使用Firebug,您可以找到链接使用的表单,填写正确的操作、事件和参数并提交,它将带您进入新页面。这就解释了错误的原因,我很高兴现在就报告所有的问题!