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 30 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
Python中一行和多行import模块问题
Apr 01 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
浅谈Python中的bs4基础
Oct 21 Python
Python闭包思想与用法浅析
Dec 27 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
python爬虫 requests-html的使用
Nov 30 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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_MySQL教程-第一天
2007/03/18 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
PHP CURL使用详解
2019/03/21 PHP
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
python3大文件解压和基本操作
2017/12/15 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
python openpyxl使用方法详解
2019/07/18 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
机械个人求职信范文
2014/01/24 职场文书
亲子拓展活动方案
2014/02/20 职场文书
新学期标语
2014/06/30 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
个人买房协议书范本
2014/10/06 职场文书
2014年教研工作总结
2014/12/06 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
企业法人任命书
2015/09/21 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers