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之print详解
Sep 28 Python
在Python中操作列表之List.append()方法的使用
May 20 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
python感知机实现代码
Jan 18 Python
python实现简单学生信息管理系统
Apr 09 Python
Python如何急速下载第三方库详解
Nov 02 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
python编写扎金花小程序的实例代码
Feb 23 Python
Python3 类型标注支持操作
Jun 02 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
window.parent与window.openner区别介绍
2012/04/12 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python实现的系统实用log类实例
2015/06/30 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python与php实现分割文件代码
2017/03/06 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
在Python中表示一个对象的方法
2019/06/25 Python
区分python中的进程与线程
2020/08/13 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
贷款委托书范本
2014/04/08 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
公司股东合作协议书
2014/09/14 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
在职证明书模板
2015/06/15 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
JavaScript canvas实现流星特效
2021/05/20 Javascript