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 相关文章推荐
Python3基础之输入和输出实例分析
Aug 18 Python
用Python进行基础的函数式编程的教程
Mar 31 Python
python中while循环语句用法简单实例
May 07 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
python中模块的__all__属性详解
Oct 26 Python
python微信公众号开发简单流程
Mar 23 Python
Python正则表达式和元字符详解
Nov 29 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
python生成随机数、随机字符、随机字符串
Apr 06 Python
Python字符串格式化方式
Apr 07 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
javascript引导程序
2008/10/26 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
详解jQuery选择器
2016/12/21 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
浅谈Python的异常处理
2016/06/19 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
python实现经纬度采样的示例代码
2020/12/10 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
老师自我鉴定范文
2013/12/25 职场文书
贷款委托书范本
2014/04/08 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
解决Pytorch中关于model.eval的问题
2021/05/22 Python
python四种出行路线规划的实现
2021/06/23 Python