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 19 Python
详解Python迭代和迭代器
Mar 28 Python
django rest framework之请求与响应(详解)
Nov 06 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python数据分析之pandas函数详解
Apr 21 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 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作为Shell脚本语言使用
2006/10/09 PHP
PHP 编程安全性小结
2010/01/08 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Python实现Linux监控的方法
2019/05/16 Python
python添加菜单图文讲解
2019/06/04 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
python轮询机制控制led实例
2020/05/03 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
会走路的树教学反思
2014/02/20 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
Python IO文件管理的具体使用
2022/03/20 Python