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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
使用Python中的tkinter模块作图的方法
Feb 07 Python
Python实现的弹球小游戏示例
Aug 01 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
Python线程创建和终止实例代码
Jan 20 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python实现打印实心和空心菱形
Nov 23 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
利用Python自动化操作AutoCAD的实现
Apr 01 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基础陷阱题(变量赋值)
2012/09/12 PHP
PHP pear安装配置教程
2016/05/14 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
JQuery球队选择实例
2015/05/18 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
面试常见的js算法题
2017/03/23 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
Python创建文件和追加文件内容实例
2014/10/21 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
如何用Python徒手写线性回归
2021/01/25 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
生产厂厂长岗位职责
2013/12/25 职场文书
土地转让协议书
2014/04/15 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
成本会计岗位职责
2015/02/03 职场文书
2015年宣传工作总结
2015/04/08 职场文书
文明上网主题班会
2015/08/14 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
python基础之停用词过滤详解
2021/04/21 Python
Python网络编程之ZeroMQ知识总结
2021/04/25 Python