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 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
python中类的一些方法分析
Sep 25 Python
Python中用Spark模块的使用教程
Apr 13 Python
django之session与分页(实例讲解)
Nov 13 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
python给微信好友定时推送消息的示例
Feb 20 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
20行Python代码实现视频字符化功能
Apr 13 Python
python调用win32接口进行截图的示例
Nov 11 Python
python随机打印成绩排名表
Jun 23 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&amp;MYSQL留言板源码
2020/07/19 PHP
php 购物车的例子
2009/05/04 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
理解Python中函数的参数
2015/04/27 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
CAD制图人员的自荐信
2014/02/07 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
出纳试用期自我评价
2015/03/10 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python