Python 自动化表单提交实例代码

练习目标

  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)  


1

2

3

4

5

6

7

8

9

10

11

<!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)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<!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 IDLE一步步来运行,这有助于理解,一步一个操作,惊喜不断

1)引入selenium模块


1

from selenium import webdriver

2)启动firefox并载入注册页面


1

2

bs = webdriver.Firefox()

bs.get(‘file:///D:/RegisterDEMO/index.htm‘)

3)查找输入框(用户名、密码、电子邮件)和按钮(提交注册),并填充指定内容


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# 由于表单内容是嵌在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框,并点击“确定”按钮


1

2

3

4

5

6

# 将查找对象转移至confirm

confirm = bs.switch_to_alert()

# 点击确定按钮

confirm.accept()

# 如果要取消,使用confirm.dismiss()

# 如果是prompt,则可以使用send_keys()先填充内容,再调用accept()或dismiss()

5)关闭浏览器


1

bs.close()

原文地址:https://www.cnblogs.com/zhangjiuzheng/p/10459454.html

时间: 2024-10-28 09:34:59

Python 自动化表单提交实例代码的相关文章

正则表达式表单验证实例代码详解

正则表达式表单验证实例代码详解 这篇文章主要介绍了正则表达式表单验证实例详解的相关资料,大家可以参考下.正则表达式表单验证具体内容如下: 首先给大家解释一些符号相关的意义 * 匹配前面的子表达式零次或多次: ^ 匹配输入字符串的开始位置:$匹配输入字符串的结束位置 1. /^$/ 这个是个通用的格式. 2. 里面输入需要实现的功能. \d 匹配一个数字字符,等价于[0-9] + 匹配前面的子表达式一次或多次: ?匹配前面的子表达式零次或一次: 下面通过一段代码给大家分析表单验证正则表达式,具体代

标准表单提交示例代码

以用户注册为示例 第一步:添加视图模型 public class ViewRegModels { [Display(Name = "用户名")] [Required(AllowEmptyStrings = false, ErrorMessage = "用户名不能为空")] public string UserName { get; set; } [Display(Name = "密码"), DataType(DataType.Password)]

CodeIgniter典型的表单提交验证代码

view内容: <?php echo form_open('user/reg'); ?> <h5>用户名</h5> <input type="text" name="username" value="<?php echo $this->validation->username;?>" size="50" /> <span id="error

HTML5 表单提交实例

html <!DOCTYPE html> <html> <head> <title>表单</title> <meta charset="utf-8"> </head> <body> <form action="http://localhost:9080/html5/html5.jsp" method="post" id="myform&

jQuery同一标签多个相同事件 return语句 表单提交实例

如form表单的submit,a标签都自带一个鼠标单击事件,其实我们还可以额外填加单击事件 如:$(':submit').click();   则自定义的单击事件先执行,然后才是标签自带的单击事件,如果在自定义事件函数中有return false则标签自带的事件不生效,有return true则生效 这常用来做表单验证,因为填写项不完整或错误是不允许提交的 原文地址:https://www.cnblogs.com/alex-hrg/p/9589137.html

Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交

今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点在其官方文档上并未提出.今天我们要做的事情就是通过浏览器访问静态文件,然后在静态文件中使用form表单往指定的路由上进行提交相应的数据. 一.静态文件的添加与访问 1.未使用Xcode管理的Perfect的静态文件根目录的配置 在PHP开发或者Java Web开发中,都有一个根目录来存储相应的静态文

php过滤表单提交的html等危险代码

表单提交如果安全做得不好就很容易因为这个表单提交导致网站被攻击了,下面我来分享两个常用的php过滤表单提交的危险代码的实例,各位有需要的朋友可参考. PHP过滤提交表单的html代码里可能有被利用引入外部危险内容的代码.例如,有些时候用户提交表单中含有html内容,但这可能造成显示页面布局混乱,需要过滤掉. 方法一: 复制代码 代码如下: //get post data function PostGet($str,$post=0) { empty($str)?die('para is null'

angular表单验证实例----可用的代码

前段时间,公司做一个单页面,就是一个表单验证,早开始在菜鸟教程上关注了angular,所以下派上用场了 angular里面对于表单验证,设置了很多指令. 也就是说不用自己写一些逻辑,直接绑定指令就行. ng-app     启动你angular的模块 ng-controller 控制器,启动你angualr里面的逻辑代码作用在页面上 ng-options  循环你select里面的option标签,很好用的 ng-submit,表单提交执行的 novalidate  表单form配合后期检测的

用python模拟登录(解析cookie + 解析html + 表单提交 + 验证码识别 + excel读写 + 发送邮件)

老婆大人每个月都要上一个网站上去查数据,然后做报表. 为了减轻老婆大人的工作压力,所以我决定做个小程序,减轻我老婆的工作量. 准备工作 1.tesseract-ocr 这个工具用来识别验证码,非常好用. ubuntu上安装: sudo apt-get install tesseract-ocr 非常简单. 2.pytesseract和PIL(pillow) pytesseract用来在python中调用tesseract-ocr,PIL(pillow)用来加载图片,安装方法如下: pip3 in