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读写Excel文件的实例
Nov 01 Python
使用Python的PEAK来适配协议的教程
Apr 14 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python聊天室实例程序分享
Jan 05 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
基于python实现模拟数据结构模型
Jun 12 Python
Python 实现定积分与二重定积分的操作
May 26 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 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
python 解压pkl文件的方法
2018/10/25 Python
python 图片去噪的方法示例
2019/07/09 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
院领导写的就业推荐信
2014/03/09 职场文书
个人借款担保书
2014/04/02 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
Python类方法总结讲解
2021/07/26 Python