解决 Selenium文件上传框无法识别的问题
2015-11-19 14:06
344 查看
其实很多人在使用selenium 做自动化的时候都会遇到这样子的一个问题,就是要进行文件的上传。对于简单一些的元素 如 这种可能可以通过直接的sendkey进行赋值,但是对于flash的这种 selenium就无能为力了。并且还得操作windows的文件上传框。这也是selenium的一个软肋
最近在测试web的时候每次执行测试用例都需要去上传各种格式的文件。这真的是苦了我了。所以抽空就去看看web自动化的相关内容,通过selenium来进行操作,结果就出现了以上的问题。
AutoIt Windows Info 用于帮助我们识Windows控件信息。
Compile Script to.exe 用于将AutoIt生成 exe 执行文件。
Run Script 用于执行AutoIt脚本。
SciTE Script Editor 用于编写AutoIt脚本。
首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上。
通过AutoIt Windows Info工具我们就可以获取到相应的信息 如:
窗口标题“打开”标题的Class为“#32770”。
文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。
打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。
再来我们打开SciTE Script Editor编辑器 编写脚本。脚本如下
最后通过Complie script to exe 软件将我们写好的脚本转换成exe,进行调用就可以了。这就是使用AutoIt的主要方法。
pywin32, pywin32中封装了很多windows api方法。所以我们就可以他来实现autoit的功能了。
首先当然还是下载好对应的依赖库,pywin32 。
代码:
以上就是一个简单的测试例子。
最近在测试web的时候每次执行测试用例都需要去上传各种格式的文件。这真的是苦了我了。所以抽空就去看看web自动化的相关内容,通过selenium来进行操作,结果就出现了以上的问题。
解决措施
网上给的最多的方法就是通过autoIt,确实这个工具的确挺强大的。我们可以简单的下载并使用下AutoItAutoIt Windows Info 用于帮助我们识Windows控件信息。
Compile Script to.exe 用于将AutoIt生成 exe 执行文件。
Run Script 用于执行AutoIt脚本。
SciTE Script Editor 用于编写AutoIt脚本。
首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上。
通过AutoIt Windows Info工具我们就可以获取到相应的信息 如:
窗口标题“打开”标题的Class为“#32770”。
文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。
打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。
再来我们打开SciTE Script Editor编辑器 编写脚本。脚本如下
MouseClick("left",1050,450) WinWait("[CLASS:#32770]","",10) ControlFocus("打开", "","Edit1") ControlSetText("打开", "", "Edit1", $CmdLine[1]) ControlClick("打开", "","Button1");
最后通过Complie script to exe 软件将我们写好的脚本转换成exe,进行调用就可以了。这就是使用AutoIt的主要方法。
pywin32, pywin32中封装了很多windows api方法。所以我们就可以他来实现autoit的功能了。
首先当然还是下载好对应的依赖库,pywin32 。
代码:
import win32api import win32gui import win32con #获取到标题为打开的窗口 procHandle = win32gui.FindWindow(None,u"打开") win32gui.SetForegroundWindow(procHandle) #获取到类名为ComboBoxEx32的选择框 edit = win32gui.FindWindowEx(procHandle,0,"ComboBoxEx32",None) win32api.SendMessage(edit, win32con.WM_SETTEXT, 0, "test") openBt = win32gui.FindWindowEx(procHandle,0,"Button",u'打开(&O)') #进行鼠标的点击 win32api.PostMessage(openBt, win32con.WM_LBUTTONDOWN, 0, 0) win32api.PostMessage(openBt, win32con.WM_LBUTTONUP, 0, 0)
以上就是一个简单的测试例子。
总结
以上两种方法亲测都是可行的,但是还是更加推荐使用第二种方法,毕竟去调用第三方的软件,或多或少会出现一些想不到的事情。文章参考
selenium借助AutoIt识别上传(下载)详解相关文章推荐
- reStructuredText(.rst)语法规则快速入门
- 变态的静态资源缓存与更新
- 对微信的二次打包学习2:安装多个微信
- [BZOJ2748][HAOI2012]音量调节
- Java三大特性(封装 继承 多态)
- Ubuntu android开发环境问题
- Linux或Windows下安装Laravel5.0
- 使用AsyncTask的常见问题及解决方式
- python开源项目目录结构参考
- 几个lamda表达式
- 35个java代码性能优化总结
- [leetcode 276] Paint Fence
- 五角形图片
- 常用的Web服务器
- win7下oracle11g监听和数据库服务都无法启动
- 如何分享一个文件
- 设置修改Tomcat的UTF-8编码
- iOS开发实践:一个类微博客户端从启动到与用户交互的过程
- HDU 5532 / 2015ACM/ICPC亚洲区长春站 F.Almost Sorted Array
- model弹出框居中