Python 自动化表单提交实例代码


Posted in Python onJune 08, 2017

今天以一个表单的自动提交,来进一步学习selenium的用法

练习目标

0)运用selenium启动firefox并载入指定页面(这部分可查看本人文章 http://www.cnblogs.com/liu2008hz/p/6958126.html)

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:\RegisterDEMO\register.htm)

<!DOCTYPE>
<html>
<head>
 <title>这是内嵌表单</title>
 <meta charset="utf-8" />
 <style type="text/css">
  input[type='text']{border:1px solid #abc; font-size:14px; padding:5px; width:200px;}
  input[type='password']{border:1px solid #abc; font-size:14px; padding:5px; width:200px;}
  input[type='submit']{border:1px solid #abc; font-size:14px; padding:5px 10px; width:100px; cursor:pointer; margin-top:20px;}
  input[type='submit']: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('是否确认提交注册');" /></td>
   </tr>
  </table>
 </form>
</body>
</html>

Python 自动化表单提交实例代码

运行步骤

我们通过Python IDLE一步步来运行,这有助于理解,一步一个操作,惊喜不断

1)引入selenium模块

from selenium import webdriver

2)启动firefox并载入注册页面

bs = webdriver.Firefox()
bs.get('file:///D:/RegisterDEMO/index.htm')

3)查找输入框(用户名、密码、电子邮件)和按钮(提交注册),并填充指定内容

# 由于表单内容是嵌在iframe里的,所以需要查找指向至iframe
# 如果又想跳出iframe,回到父页面,可以使用 bs.switch_to_default_content()
bs.switch_to_frame('register-iframe')
# 由于所有的元素都命名了id,可以使用find_element_by_id,还有很多的其它find_element_*大家可以练习
# 查找用户名框,并填充“hertz.liu"
account = bs.find_element_by_id('txt_account')
account.send_keys('hertz.liu')
# 查找密码框,并填充"pwd123"
pwd = bs.find_element_by_id('txt_password')
pwd.send_keys('pwd123')
# 查找电子邮箱框,并填充”hertz.liu@mail.com"
email = bs.find_element_by_id('txt_email')
email.send_keys('hertz.liu@mail.com')
# 查找提交按钮,并模拟点击提交
btn_reg = bs.find_element_by_id('btn_register')
btn_reg.click()

4)非常顺利的,完成了表单的填充和提交。一般的表单,由于涉及到数据的操作,开发人员都会设置一些二次确认以防止误操作。此处就是用了简单的confirm来进行二次确认,下面是如何让selenium来识别出confirm框,并点击“确定”按钮

# 将查找对象转移至confirm
confirm = bs.switch_to_alert()
# 点击确定按钮
confirm.accept()
# 如果要取消,使用confirm.dismiss()
# 如果是prompt,则可以使用send_keys()先填充内容,再调用accept()或dismiss()

5)关闭浏览器

bs.close()

以上所述是小编给大家介绍的Python 自动化表单提交实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python对指定目录下文件进行批量重命名的方法
Apr 18 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python贪吃蛇游戏编写代码
Oct 26 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
python版学生管理系统
Jan 10 Python
Python爬豆瓣电影实例
Feb 23 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
Python unittest discover批量执行代码实例
Sep 08 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python中使用subprocess库创建附加进程
May 11 Python
使用Pytorch训练two-head网络的操作
May 28 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 #Python
Python实现网站注册验证码生成类
Jun 08 #Python
Python实现多线程抓取网页功能实例详解
Jun 08 #Python
Python中with及contextlib的用法详解
Jun 08 #Python
Python使用pylab库实现画线功能的方法详解
Jun 08 #Python
Python实现对象转换为xml的方法示例
Jun 08 #Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 #Python
You might like
PHP的栏目导航程序
2006/10/09 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
js Math 对象的方法
2013/09/01 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
详解JS面向对象编程
2016/01/24 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Python中Threading用法详解
2017/12/27 Python
python实现批量注册网站用户的示例
2019/02/22 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
我的梦想演讲稿
2014/04/30 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
护士先进个人总结
2015/02/13 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
七年级数学教学反思
2016/02/17 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
Python读取和写入Excel数据
2022/04/20 Python