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的Django框架中创建语言文件
Jul 27 Python
浅析Python中的for 循环
Jun 09 Python
EM算法的python实现的方法步骤
Jan 02 Python
python实现外卖信息管理系统
Jan 11 Python
python3爬虫之设计签名小程序
Jun 19 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
python文本数据处理学习笔记详解
Jun 17 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
python爬虫可以爬什么
Jun 16 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
php adodb分页实现代码
2009/03/19 PHP
PHP学习笔记之二
2011/01/17 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
jquery easyui使用心得
2014/07/07 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python随机读取文件实现实例
2017/05/25 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
SQL Server笔试题
2012/01/10 面试题
大学生职业生涯规划范文
2014/01/08 职场文书
2014政务公开实施方案
2014/02/19 职场文书
入党自荐书范文
2014/03/09 职场文书
安全生产管理责任书
2014/04/16 职场文书
模特大赛策划方案
2014/05/28 职场文书
简单租房协议书范本
2014/08/20 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
小组组名及励志口号
2015/12/24 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
一些让Python代码简洁的实用技巧总结
2021/08/23 Python