在前端桌面测试技术中,Selenium与WebDriver是一对常见的组合,尤其是Selenium提供了远程Grid集群机制可以很方便的执行测试用例。WebDriver目前由各大浏览器厂商实现,相较于Chrome和Firefox,IE Driver的搭建过程略显繁琐,也比较容易出错。下面介绍一下IE Driver的完整搭建过程,并提供一些问题的解决方案,供大家参考。
本例以IE 11作为范本,其他版本的搭建过程可能略有差异,不建议使用IE 6及以下版本。
搭建IE测试环境
第一步:确保IE 11在Windows上已正确安装,如果你使用的Windows 7,请确保已安装Service Pack 1。
第二步:安装IE WebDriver Tool (Internet Explorer 11)。
第三步:在“设置-安全”中,将所有栏目的保护模式设为统一的值(推荐激活),如图所示。
第四步:针对IE 11,我们需要在目标机器上设置一些注册表的值,以便IE Driver能够管理它所创建的IE实例。
对于32位的Windows,请找到以下键:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/Main/FeatureControl/FEATURE_BFCACHE
对于64位的Windows,请找到以下键:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Internet Explorer/Main/FeatureControl/FEATURE_BFCACHE
注意FEATURE_BFCACHE键有可能是不存在的,如果不存在就新建一个。
最后,在FEATURE_BFCACHE键内部,新建一个DWord值,名称为iexplore.exe,值为0。
如果大家嫌麻烦的话,这里分别提供32位和64位的注册表修改脚本文件,下载下来直接双击就搞定了。
http://download.csdn.net/detail/mybreeze77/9746869
至此,IE 11的测试环境就搭建好了,如果是本地测试的话,应该是足够了。但是如果是远程测试的话(比如通过Grid),还会遇到一些坑,下面做一些简单的总结。
1. 浏览器的页面缩放级别(zoom level)必须设置为100%,这样原生的鼠标事件才能指向正确的坐标。
2. 远程桌面连接的情况下,如果会话处于非激活状态(如锁定),截图功能就会失效(黑屏)。要防止系统自动锁定,可以采取以下措施:
关闭屏保。电源选项中如果有诸如“长时间无操作自动休眠”子类的设置,请关闭。当然,这只能解决一部分问题,一旦我们关闭远程连接,会话还是会处于关闭状态,并显示登录页面。要解决这个问题,我们需要使用tscon工具来帮助我们以一种巧妙的方式退出远程连接,而不是直接关闭。tscon工具能够将控制权交还给远程机器的本地会话,跳过登录页面,这时所有在远程机器上执行的程序依然可以照常工作,当然也包括了我们的前端测试。
当需要退出远程桌面时,在远程机器上执行以下代码段即可(需要管理员权限)。
%windir%/System32/tscon.exe RDP-Tcp#NNN /dest:consoleRDP-Tcp#NNN是当前远程桌面会话的ID,例如RDP-Tcp#0。这个ID可以通过任务管理器,用户选项卡下的会话一栏中找到。
执行代码后,我们会看到“远程桌面会话已终止”的提示,这说明远程桌面客户端已关闭,但不影响那些远程程序的运行。
同样的,如果你嫌麻烦,可以直接在远程机器上创建一个BAT文件,内容如下:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( %windir%/System32/tscon.exe %%s /dest:console)之后每次只需要以管理员身份运行这个文件就可以退出会话了。
参考
https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriverhttp://heliumhq.com/docs/internet_explorerhttps://support.smartbear.com/viewarticle/86476/
新闻热点
疑难解答