selenium python --自动表单填写--学习笔记

因为公司业务的需要,要在公司内部网上(jsp网站)系统中做大量的重复操作,之前也用过如“按键精灵”或“Auto_ACN"之类的自动操作软件。但是这些东西不但脚本编写困难(主要是对网页上特定原素的定位等)运行的时候还占用整台电脑,不能有任何干扰。也考虑过使用python 来直接模拟浏览器,自动构建表单数据发送来自动操作,但公司这个破网站,一大堆的frame 一大堆的javascript 跟踪了几次还是没有找出form的post地址和需要发送的表单数据。

终于,在学习自动测试的时候,发现了一个好东西 ---selenium python 这玩艺儿可以打开本机的一个浏览器(IE,FireFOX等都行)并通过编写python程度定位网页元素,操作表单,填写文字。一句话,人工能操作的,它都能模拟。

关于该软件的使用,就不在这边露丑了,网上一大堆(它还有一个Java版的)在stackoverflow 上好多问题都是问的Java版的问题,那些处理方法大多也能处理python版的。

现将使用中的一些问题处理记录一下:

1、光于网页中的框架跳转,跳转进一个子框架,要跳到另一个子框架(不是下属的)要先跳出来,再一步步跳进去。

2、关于在IE中若使用了javascript的”window.showModalDialog“打开的模拟对话框 selenium多数就不能找出来,也不能跳转到这个对话框中。可以使用如下方式在showModalDialog运行之前,注入一段Javascript 用 window.open 来替换,完了以后再通过注入改回来:

这是注入替换的语句

driver.execute_script("window.showModalDialog = window.open;")
这是完成后替换回来的语句
driver.execute_script("window.showModalDialog = window.showModalDialog;")

3、一定记住,driver是不随页面跳转自动从框架中跳出来,使用过switch_to.frame 命令的话,要记的driver不会自动从一个框架跳出来,那怛这个框架已被关闭(页面跳转关闭和使用close()及quit()关闭的都是)

4、网上有一些说window.open打开的模拟对话框,在使用driver.window_handles获最窗口句柄列表时是按打开顺序排的,但我在IE中的实际使用时窗口句柄列表似乎是按名句柄字符串的字母顺序排的。

时间: 2024-10-11 12:50:23

selenium python --自动表单填写--学习笔记的相关文章

python基础教程_学习笔记3:元组

元组 元组不能修改:(可能你已经注意到了:字符串也不能修改.) 创建元组的语法很简单:如果用逗号分隔了一些值,那么你就自动创建了元组. >>> 1,3,'ab' (1, 3, 'ab') 元组也是(大部分时候是)通过圆括号括起来的. >>> (1,3,'13') (1, 3, '13') 空元组可以用没有内容的两个圆括号来表示. 如何实现包括一个值的元组呢? >>> (5) 5 >>> ('ab') 'ab' >>>

python基础教程_学习笔记5:字符串

字符串 基本字符串操作 字符串也是序列,因此序列的基本操作(索引.分片.连接.乘法.长度.求最大值和最小值.成员资格)对字符串同样适用: 索引 >>> 'a_string'[0] 'a' 长度 >>> len('a_string') 8 求最大值 >>> max('a_string') 't' 求最小值 >>> min('a_string') '_' 乘法 >>> 'a_string'*2 'a_stringa_st

python基础教程_学习笔记2:序列-2

序列-2 通用序列操作 序列相加 通过加号对列表进行连接操作: 列表 >>> [1,3,4]+[2,5,8] [1, 3, 4, 2, 5, 8] 字符串 >>> '134'+'258' '134258' 元组 >>> (1,2,3)+(2,5,8) (1, 2, 3, 2, 5, 8) 元素数据类型不同的列表 >>> [[1,3],[3,9]]+[[2,2],'abc'] [[1, 3], [3, 9], [2, 2], 'abc'

python之数据类型(学习笔记二)

python之数据类型(学习笔记二) 在Python中,能够直接处理的数据类型有以下几种: (1)整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例 如: 1 , 100 , ‐8080 , 0 ,等等. 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用 0x 前缀和0-9,a-f表示,例 如: 0xff00 , 0xa5b4c3d2 ,等等. (2)浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时

python基础教程_学习笔记8:序列_练习与总结_1

序列_练习与总结 每次处理一个字符 任务: 用每次处理一个字符的方式处理字符串. 方案: 可以创建一个列表,列表的子项是字符串的字符.python实际上并没有一个特别的类型来对应"字符"并以此和字符串区分开来.可以调用内建的list,用字符串作为参数: thelist=list(thestring) 也可以不创建一个列表,直接用for语句完成对该字符串的循环遍历: for c in thestring: do_something_with(c) 或者使用列表推导中的for来遍历: re

python之raw_input()(学习笔记六)

python之raw_input()(学习笔记六) 我们经常使用raw_input()读取用户的输入,如下例子所示: >>> name = raw_input('please input your name:'),截图如下: 下面简单说下,raw_input()与if搭配使用,脚本如下: #!/usr/bin/env python # -*- coding:utf-8 -*- birth = raw_input('birth:') if birth < 2000: print '0

python基础教程_学习笔记23:图形用户界面

图形用户界面 丰富的平台 在编写Python GUI程序前,需要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合,可以通过叫做GUI工具包的给定Python模块进行访问. 工具包 描述 Tkinter 使用Tk平台.很容易得到.半标准. wxpython 基于wxWindows.跨平台越来越流行. PythonWin 只能在Windows上使用.使用了本机的Windows GUI功能. JavaSwing 只能用于Jython.使用本机的Java GUI. PyGTK 使用GTK

python基础教程_学习笔记9:抽象

抽象 懒惰即美德. 抽象和结构 抽象可以节省大量工作,实际上它的作用还要更大,它是使得计算机程序可以让人读懂的关键. 创建函数 函数可以调用(可能包含参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值.一般来说,内建的callable函数可以用来判断函数是否可调用: >>> import math >>> y=1 >>> x=math.sqrt >>> callable(x) True >>> callab

python基础教程_学习笔记10:异常

异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行: >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: integer division or modulo by