首頁 > 後端開發 > Python教學 > python自動化表單提交

python自動化表單提交

巴扎黑
發布: 2017-06-23 15:11:03
原創
2680 人瀏覽過

  今天以一個表單的自動提交,來進一步學習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

    與上面的三個瀏覽器互動內容,需要用到switch_to_alert,有幾個用法要注意:

    a)accept():發送確定指令,相當於點擊「」確定」按鈕

    b)dismiss():取消操作,相當於點擊「取消」按鈕或點擊右上角「關閉」

    c)send_keys:填滿prompt方塊需要填寫的內容

準備工作

  html頁面(註冊頁,內嵌一個註冊表單;之所以這樣舉例,是為了介紹練習selenium的switch_to_frame的用法)

  1)註冊頁面(路徑D:\RegisterDEMO\index.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##

<!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>
登入後複製

   2)註冊表單(路徑D## \RegisterDEMO\register.htm)

from selenium import webdriver
登入後複製

運行步驟

###  我們透過Python IDLE一步步來運行,這有助於理解,一步一個操作,驚喜不斷####### 1)引入selenium模組######
bs = webdriver.Firefox()
bs.get(&#39;file:///D:/RegisterDEMO/index.htm&#39;)
登入後複製
######  2)啟動firefox並載入註冊頁面######
# 由于表单内容是嵌在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()
登入後複製
######  3)尋找輸入框(使用者名稱、密碼、電子郵件)和按鈕(提交註冊),並填入指定內容######
# 将查找对象转移至confirm
confirm = bs.switch_to_alert()

# 点击确定按钮
confirm.accept()
# 如果要取消,使用confirm.dismiss()
# 如果是prompt,则可以使用send_keys()先填充内容,再调用accept()或dismiss()
登入後複製
######  4)非常順利的,完成了表單的填入和提交。一般的表單,由於涉及資料的操作,開發人員都會設定一些二次確認以防止誤操作。這裡就是用了簡單的confirm來進行二次確認,下面是如何讓selenium來識別出confirm框,並點擊“確定”按鈕######
bs.close()
登入後複製
######  5)關閉瀏覽器# #####rrreee###### ###

以上是python自動化表單提交的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板