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深入学习之上下文管理器
Aug 31 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
python实现电脑自动关机
Jun 20 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
python语音识别实践之百度语音API
Aug 30 Python
Python实现Linux监控的方法
May 16 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
python pyenv多版本管理工具的使用
Dec 23 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
python中print格式化输出的问题
Apr 16 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php二分查找二种实现示例
2014/03/12 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
查看Django和flask版本的方法
2018/05/14 Python
python生成n个元素的全组合方法
2018/11/13 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
法律专业个人实习自我鉴定
2013/09/23 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
学生个人自我鉴定
2014/03/26 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android