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类的专用方法实例分析
Jan 09 Python
python中as用法实例分析
Apr 30 Python
如何将python中的List转化成dictionary
Aug 15 Python
numpy基础教程之np.linalg
Feb 12 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
Pycharm github配置实现过程图解
Oct 13 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
Django分页器的用法你都了解吗
May 26 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Django实现自定义404,500页面教程
2017/03/26 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python中join函数简单代码示例
2018/01/09 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Python 获取项目根路径的代码
2019/09/27 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
python数据抓取3种方法总结
2021/02/07 Python
捷克时尚网上商店:OTTO
2018/03/15 全球购物
《彩色世界》教学反思
2014/04/12 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
个人总结与自我评价
2015/02/14 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
浅谈Redis中的RDB快照
2021/06/29 Redis
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫