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基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
numpy下的flatten()函数用法详解
May 27 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
Django实现文件上传下载功能
Oct 06 Python
python TCP包注入方式
May 05 Python
解决python运行启动报错问题
Jun 01 Python
Python使用正则表达式实现爬虫数据抽取
Aug 17 Python
基于python实现复制文件并重命名
Sep 16 Python
Python Serial串口基本操作(收发数据)
Nov 06 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/11/23 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
Javascript 入门基础学习
2010/03/10 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
node读写Excel操作实例分析
2019/11/06 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
pandas每次多Sheet写入文件的方法
2018/12/10 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
django之自定义软删除Model的方法
2019/08/14 Python
python根据时间获取周数代码实例
2019/09/30 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
判断单链表中是否存在环
2012/07/16 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
节约用水的口号
2014/06/20 职场文书
安全口号大全
2014/06/21 职场文书
如何写辞职信
2015/05/13 职场文书
新员工入职感言范文!
2019/07/04 职场文书