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进阶教程之函数参数的多种传递方法
Aug 30 Python
Python中的闭包总结
Sep 18 Python
Python求导数的方法
May 09 Python
python利用装饰器进行运算的实例分析
Aug 04 Python
python实现拓扑排序的基本教程
Mar 11 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
解决python报错MemoryError的问题
Jun 26 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
如何使用Python实现自动化水军评论
Jun 26 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
使用TFRecord存取多个数据案例
Feb 17 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 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版微信数据统计接口用法示例
2016/10/12 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
python控制台英汉汉英电子词典
2020/04/23 Python
python使用marshal模块序列化实例
2014/09/25 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
python中import学习备忘笔记
2017/01/24 Python
Python操作MongoDB详解及实例
2017/05/18 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Django rest framework实现分页的示例
2018/05/24 Python
python map比for循环快在哪
2020/09/21 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
2014学年自我鉴定
2014/02/23 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python