3

Mechanizeを使用して、ログインが必要なサイトをクロールしています。次のコードでログインします。

require 'mechanize'

agent = Mechanize.new
agent.get 'http://www.specialsite.com'

agent.page.form.txtEmail = 'myemail@email.com'
agent.page.form.txtPassword = 'myPassword'
agent.page.form.add_field! "__EVENTTARGET","btnLogin"
agent.page.form.add_field! "__EVENTARGUMENT",""
agent.page.form.submit


agent.page.link_with(:text => "Special Link").click

agent.page.form.txtSearch = "Search Text"
agent.page.form.add_field! "__EVENTTARGET","lbtnSearch"
agent.page.form.add_field! "__EVENTARGUMENT","" 
agent.page.form.submit

私の質問は、Ruby IRBでこのコードを実行して、「エージェント」のように定義されたオブジェクトにアクセスして、必要な残りのコードを実験して生成できるようにするにはどうすればよいですか?

'load'を試しました。コマンドを実行しますが、「エージェント」などのオブジェクトは使用できません。

4

4 に答える 4

3

このようなものをそのままテキストファイルに書き込み、IRBを開いて次のように入力します。

File.open("your_file","r").readlines.each{|line| eval(line)}

これは役に立ちますか?

編集:テキストファイルは、IRBを起動したのと同じディレクトリに存在する必要があります。一般的な利点:巨大なIRBワンライナーをいじるよりも、テキストファイル内の何かを変更する方がはるかに簡単です。

于 2013-01-09T15:58:09.547 に答える
2

てこを使用:

require 'pry'
... your code
binding.pry

スクリプトを実行すると、 で停止しbinding.pry、オブジェクトを評価できる irb のような (しかしより良い) repl が得られます。exit続行または終了するために使用しexit-programます。

于 2013-01-09T23:23:11.373 に答える
0

これはすべて繰り返し可能なコードであるため、可能な限り DRY (Don't Repeat Yourself) を実装してみてください。クラスでこれらすべてを実行し、エージェントを返すメソッドを用意します。次に、irb でクラスを要求し、irb 変数をクラス getmethod に設定します。このようにして、プロジェクト lator に使用するクラスの開始がすでにあります。

于 2013-01-09T16:18:14.687 に答える
0

@pguardiaro がPryを使用することに同意します

ただし、IRB で行う方法は次のとおりです。

binding.eval(File.read("your_file.rb"), "your_file.rb"

于 2013-01-10T01:09:12.060 に答える