selenium部分功能(上传文件、swf插件)无法自动化时可使用的方
selenium是一个相当方便的东西,但是有些功能它也并不能完成,比如上传文件,swf插件的点击操作,和各种不在web中需要在Windows进行相关的操作。 我再录制selenium脚本的时候碰到的第一个问题就是上传文件。 1、一般来说,上传文件的HTML代码都是使用<input type='file'>标签完成的,而这种的上传文件比较好操作,可使用sendKeys方法完成。 如: 可使用selenium webDriver:
[java]?
copy
2、但是如果上传文件不是使用<input>标签完成的,就不能使用以上的方法了,baidu了很久也没有其他类似sendkeys的方法可以实现。 如:swf插件
copy
以上这种代码就无法使用sendkeys的方法实现上传文件 我第二次采用的方法就是使用autoIT工具。 autoIT是一个可以用来捕捉Windows操作然后编写代码生成一个EXE文件的工具,只不过这个工具需要在打开上传文件窗口后才能使用,而我的上传文件代码无法使用click等其他方式打开上传文件窗口,所以后来也废弃不用了。 以下是autoIT的代码,具体使用方法网上可baidu:
[plain]?
copy
然后在selenium webDriver中使用代码:
copy
3、而使用click方法点击这个对象也会在Junit报错且前台无任何反应,这个时候就可以使用第三个我一不小心找到的工具——sikuli!!! Junit执行报错:
copy
注:据说会报错是因为chrome版本问题,但是没有研究过
在网上各种找的时候,在以下这位好心人的评论里看到了这个名字,sikuli,抱着试一试的心情我baidu了一下,真的可以用,虽然不知道你是谁,但是我感谢你呀~ sikuli是一种靠对比图片来定位的工具,无论是web页面、Windows窗口,只要是显示在屏幕上的东西它都能靠图片来定位,但是如果在屏幕上有差不多的地方,可能就会定位失败啦,但是我需要定位的地方都很有特点,所以没有失败过。 首先,下载sikuli:https://launchpad.net/sikuli/+download 进入网页后找到最新的setup.jar就可以,我是sikulixsetup-1.1.0.jar 也可以下载source包,在eclipse中使用查看class方法:https://github.com/sikuli/sikuli/releases 得到sikulixsetup-1.1.0.jar后可导入eclipse build path中使用,但是其实并没有可以使用,这种时候执行Junit会报错:
copy
之前一直不明白为什么会报错,后来才知道需要执行jar包
打开cmd,cd到jar包的目录文件中,然后执行
copy
之后会打开让你选择的窗口,直接选择第二种,java方式(eclipse),然后点击setup now,之后会弹出一个窗口,具体是神马我忘记了,但是我选择了YES也没有错。
执行完成后会有一个say hi的窗口,然后在同目录下会出现一个jar包:sikulixapi.jar,就此安装完成,就可以正常使用了。 首先截取需要的图片: choosefile.png:选择文件的按钮图片
inputfilename.png:上传文件窗口的输入框图片
openfile.png:上传文件窗口的open按钮图片
保存到你期望的位置 在selenium webDriver中写代码:
copy
记得导入包:import org.sikuli.script.Screen;
就可以执行啦 更多sikuli的命令: http://www.testwo.com/article/299 http://doc.sikuli.org/tutorials/helloworld/helloworld-mac.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |