Pythonの自動フォーム送信

巴扎黑
巴扎黑オリジナル
2017-06-23 15:11:032679ブラウズ

今日は、フォームの自動送信を使用して、selenium の使い方をさらに学習します

練習目標

0) selenium を使用して Firefox を起動し、指定されたページを読み込みます (私の記事を参照できます)この部分)

1) ページ要素の検索 (複数の検索メソッド: find_element_*)

2) コンテンツの充填 (send_keys)

3) iframe と親ページの切り替え (switch_to_frame は iframe に切り替え、switch_to_default_content は に切り替えます)メインページ)

4) ブラウザ対話型処理: window.alert、window.confirm、window.prompt

上記の 3 つのブラウザと対話するには、switch_to_alert を使用する必要があります。注意する必要がある使用法がいくつかあります。 :

a) accept(): 確認コマンドを送信、「OK」ボタンをクリックするのと同等

b) dismiss(): 操作をキャンセルする、「キャンセル」ボタンをクリックするか、上部の「閉じる」をクリックするのと同等右隅

C) send_keys: プロンプトボックスに入力する必要がある内容

準備作業

HTMLページ(登録ページ、登録フォームが埋め込まれている、この例の理由) seleniumでswitch_to_frameの使い方を紹介することです)

1) 登録ページ(パスD:RegisterDEMOindex.htm)

<!DOCTYPE>
<html>
<head>
	<title>用户注册</title>
	<meta charset="utf-8" />
</head>
<body>
	<h3>测试Python selenium自动提交表单</h3>
	<iframe id="register_iframe" width="320" height="200" border="0" src="register.htm" />
</body>
</html>

2) 登録フォーム(パスD:RegisterDEMOregister.htm)

<!DOCTYPE>
<html>
<head>
	<title>这是内嵌表单</title>
	<meta charset="utf-8" />
	<style type="text/css">
		input[type=&#39;text&#39;]{border:1px solid #abc; font-size:14px; padding:5px; width:200px;}
		input[type=&#39;password&#39;]{border:1px solid #abc; font-size:14px; padding:5px; width:200px;}
		input[type=&#39;submit&#39;]{border:1px solid #abc; font-size:14px; padding:5px 10px; width:100px; cursor:pointer; margin-top:20px;}
		input[type=&#39;submit&#39;]:hover{background-color:#aaaaff;}
	</style>
</head>
<body>
	<form action="/register/regaction" method="POST">
		<table>
			<tr>
				<td>用户名:</td>
				<td><input id="txt_account" type="text" value="" placeholder="用户名" /></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input id="txt_password" type="password" value="" placeholder="密码" /></td>
			</tr>
			<tr>
				<td>电子邮箱:</td>
				<td><input id="txt_email" type="text" value="" placeholder="电子邮箱" /></td>
			</tr>
			<tr>
				<td> </td>
				<td><input id="btn_register" type="submit" value="提交注册" onclick="return confirm(&#39;是否确认提交注册&#39;);" /></td>
			</tr>
		</table>
	</form>
</body>
</html>

ステップを実行します

Python IDLEを通してステップバイステップで実行します、ここにあります 理解するのに役立ちます、一歩ずつ、驚きが続きます

1) Seleniumモジュールを紹介します

from selenium import webdriver

2)Firefoxを起動し、登録ページを読み込みます

bs = webdriver.Firefox()
bs.get(&#39;file:///D:/RegisterDEMO/index.htm&#39;)

3)入力ボックス(ユーザー名、パスワード、メールアドレス)とボタン(登録を送信)を見つけて、指定された内容を記入します

# 由于表单内容是嵌在iframe里的,所以需要查找指向至iframe
# 如果又想跳出iframe,回到父页面,可以使用 bs.switch_to_default_content()
bs.switch_to_frame(&#39;register-iframe&#39;)

# 由于所有的元素都命名了id,可以使用find_element_by_id,还有很多的其它find_element_*大家可以练习
# 查找用户名框,并填充“hertz.liu"
account = bs.find_element_by_id(&#39;txt_account&#39;)
account.send_keys(&#39;hertz.liu&#39;)

# 查找密码框,并填充"pwd123"
pwd = bs.find_element_by_id(&#39;txt_password&#39;)
pwd.send_keys(&#39;pwd123&#39;)

# 查找电子邮箱框,并填充”hertz.liu@mail.com"
email = bs.find_element_by_id(&#39;txt_email&#39;)
email.send_keys(&#39;hertz.liu@mail.com&#39;)

# 查找提交按钮,并模拟点击提交
btn_reg = bs.find_element_by_id(&#39;btn_register&#39;)
btn_reg.click()

4)とてもスムーズにフォームへの記入と送信が完了しました。一般的なフォームの場合、データ操作を伴うため、開発者は誤操作を防ぐためにいくつかの二次確認を設定します。二次確認のための簡単な確認は、Seleniumに確認ボックスを認識させて「OK」ボタンをクリックする方法です

# 将查找对象转移至confirm
confirm = bs.switch_to_alert()

# 点击确定按钮
confirm.accept()
# 如果要取消,使用confirm.dismiss()
# 如果是prompt,则可以使用send_keys()先填充内容,再调用accept()或dismiss()

5)ブラウザを閉じます

bs.close()

以上がPythonの自動フォーム送信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:day 1次の記事:Python进阶之文件和流