質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

4513閲覧

mechanizeでformの名前の無いサイトにログイン

terate

総合スコア103

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/04/04 13:30

ruby

1agent = Mechanize.new 2page = agent.get('URL') 3page.encoding='utf-8' 4 5login_result = page.form_with(name: nil) do |login| 6 login.field_with(:name => "userName").value = " ユーザ名 " 7 login.field_with(:name => "Passward").value = " パスワード " 8end.submit

mechanizeでログインする際、しらべてみると上記のようなコードでログインできるようなサンプルを見つけましたが、目的のサイトにはformのnameがありません。(上記にはnilと書いています。)
その場合、どのようにしたら良いでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

参考条件

...
forms
#parser から form 要素を検索し、出現順に Mechanize::Form オブジェクトにして配列で返します。
...
forms_with(pattern)
{メソッド名 => 返り値} という条件を満たす Mechanize::Form オブジェクトを #forms から探し、全てを配列で返します。
...

...
page = agent.get("http://twitter.com/login")
form = page.forms[1]
form["session[username_or_email]"] = cgi['user'][0]
...

...
以下はフォームのactionが/post/login.phpであるフォームを取得する例である。
...
page.forms_with(:action => '/post/login.php').each do |f|

do something

end
...

投稿2016/04/04 21:07

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

formが1つしか無いなら、引数無しのform_with
formが複数あるなら、引数無しのforms_withで、Arrayが返るので添え字で何番目のformかを指定する。

投稿2016/04/04 13:45

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

terate

2016/04/05 03:09

迅速にお答えいただき、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問