很长一段时间大家都支持Selenium是只支持测试Web应用程序的。
纵观Selenium的成长历程,不难解释这个原因。Selenium开始的时候是作为一个Firefox中的插件出现的,而且做得是纯JS脚本的方式,目的就是一个老外测试的有点烦了,就写了一个js的脚本每天去run自己的测试项目。从这个点来看,老外真的很有才。。想想国内的同行有谁会想到做得有点烦了,去自己搞腾一个工具去做每天的工作。。。
后面Selenium做得挺不错的,老外也感觉自己乐不如大家同乐。。。于是就开源了Selenium,后面进一步的壮大了,反而让Selenium开花结果,产生了一个真正意义上的自动化的支持。先是java版本的,然后是其他语言版本的,像Ruby ,c#,python等等。。。感觉好强大啊。
而且Selenium就是针对QTP来干的。。。SeleniumHq,就是对着HP干的。。。看出来了吗?
可能慢慢的你还发现Selenium做点web的测试还是可以的,可能针对Windows的程序如何用它去测试呢?
还是强大的网友给出了答案。让Selenium支持Windows程序无缝连接。。。这里就是推荐使用AutoIt这个工具,关于如何使用你需要到网上搜索看看了。http://www.autoitscript.com/site/autoit/
下面是可以用的的AutoIt的API 函数。
需要两个文件才能使用Autoit提供的外部操作API.
一个是jacob文件,这个是java操作DCOM的一个桥梁API工具;
一个是AutoitX3.dll文件;
下载了上面的两个文件,一个是在本地register所需要的autoit dll文件。
采用命令:regsvr32 autoitx3.dll 文件即可;
然后再java代码中如下调用即可:
,之后你就能在你的java程序中调用Autoit的API即可。
如下:
AutoItXUtils autoit=getAutoItX(); //得到Autoit的实体类 autoit.winWait(title, text, 120); //激活一个windows窗口,只需要指定窗口的标题和对应的可见文本,这里会等待窗口出现,如果在120秒内还是没有出现就返回false autoit.winActivate(title, text); //激活窗口 boolean clicked=autoit.controlClick(title, text, controlID); //点击一个控件,需要指定这个控件的windows id,还有控件所对应的title及其可见的text
是不是很不错,可以的话,你可以尝试下去操作弄弄。
不过使用了AutoIt的话,你就不能使用Selenium的RemoteWebDriver的特性了,也就是分布式执行的相关操作了,因为所有的Autoit的脚本其实都是运行在本地的,所以如果你需要让Selenium继续可以在不同的机器上运行,你可能需要使用Jenkins操作了。
本文转自hcy's workbench博客园博客,原文链接:http://www.cnblogs.com/alterhu/p/3323835.html,如需转载请自行联系原作者。