Symfoware

Symfowareについての考察blog

Python mechanizeでボタンクリック

mechanizeの簡単な使い方を調べました。
Python mechanizeでブラウザ操作をエミュレート

ボタンクリック(formのsubmit)のやり方について調べてみます。


対象フォーム



適当に入力する画面と、入力された値を表示する画面を作成しておきました。

・input.php


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>formテスト</title>
  7. </head>
  8. <body>
  9.     入力
  10.     <form method="post" action="result.php" name="inputForm">
  11.         <div><input type="text" name="input_1"></div>
  12.         <div><input type="text" name="input_2"></div>
  13.         <div><input type="submit" value="登録"></div>
  14.     </form>
  15. </body>
  16. </html>




・result.php


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>form入力結果</title>
  7. </head>
  8. <body>
  9.     <div>input_1:<?php echo $_POST['input_1'] ?></div>
  10.     <div>input_2:<?php echo $_POST['input_2'] ?></div>
  11. </body>
  12. </html>





ブラウザで動作させると、以下のようになります。

658_01.png

658_02.png




フォームの取得



ボタンを押す前に、フォームの情報を取得してみます。


  1. # -*- coding:utf-8 -*-
  2. import mechanize
  3. # Browserオブジェクトを生成
  4. br = mechanize.Browser()
  5. # 非ロボット化
  6. br.set_handle_robots(False)
  7. # 対象のURLをオープン
  8. br.open('http://localhost:8080/input.php')
  9. # フォームを選択
  10. br.select_form(name="inputForm")
  11. # 名前がない場合は、表示順を指定して取得
  12. # br.select_form(nr=0)
  13. # フォームの情報を表示
  14. print br.form





実行結果


<inputForm POST http://localhost:8080/result.php application/x-www-form-urlencoded
<TextControl(input_1=)>
<TextControl(input_2=)>
<SubmitControl(<None>=登録) (readonly)>>




ちゃんと狙っているフォームが取得できているようです。





値の設定とsubmit



input_1、input_2に値を設定してsubmit。
結果を表示してみます。


  1. # -*- coding:utf-8 -*-
  2. import mechanize
  3. # Browserオブジェクトを生成
  4. br = mechanize.Browser()
  5. # 非ロボット化
  6. br.set_handle_robots(False)
  7. # 対象のURLをオープン
  8. br.open('http://localhost:8080/input.php')
  9. # フォームを選択
  10. br.select_form(name='inputForm')
  11. # 値を設定
  12. br['input_1'] = 'hoge'
  13. br['input_2'] = 'piyo'
  14. # submit
  15. response = br.submit()
  16. # 結果の読み取り
  17. print response.read()




狙い通り、input_1にhoge、input_2にpiyoが表示されました。


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>form入力結果</title>
  7. </head>
  8. <body>
  9.     <div>input_1:hoge</div>
  10.     <div>input_2:piyo</div>
  11. </body>
  12. </html>




関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2016/01/23(土) 16:45:17|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<IIS 8.5(2012 R2)で認証方式にWindows認証を使用する | ホーム | Python mechanizeでブラウザ操作をエミュレート>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1826-97957374
この記事にトラックバックする(FC2ブログユーザー)