本节提供了对象识别限制的原因与Ranorex工具的概述,并提供一些纠正故障的方法和建议。
.NET WinForms
Ranorex程序集中没有加载包含这种控件的定义。对这种UI元素的控制识别能力是有限的。对.NET的WinForms应用程序或控件的支持之所以是有限的,有可能是以下几个原因:
原因1:
自动化进程(Ranorex executable) 和自动化应用程序(AUT)不是使用相同的安全权限启动的,即使用不相同的Windows用户。
解决方法:
尝试使用同一个用户来启动应用程序。
原因2:
无论是自动化测试生成的可执行文件还是从网络驱动器/加密文件夹上启动的AUT,都不具备必要的安全权限。
解决方法:
尝试把这两个应用程序都复制到你的硬盘上的一个文件夹中。
原因3:
不能识别的是执行混合模式的EXE文件(不是DLL程序集)。原因可能是混淆的程序或者程序集合并所创建的混合模式EXE文件。.NET框架不支付加载这样混合模式的可执行文件到进程中,并且这也是Ranorex为什么不能在其中实施控制的原因。
解决方法:
作为一种变通方法,你可以尝试自动操作一个非混淆的程序
原因4:
不能被识别的控件是程序集中针对特定平台/处理器编译的,以及自动测试用例是针对不同平台和处理器的。在64位操作系统,这可能会导致问题。因为程序集不能通过自动化进程加载。
解决方法:
在自动化项目选项中尝试改变“Target CPU”(Ranorex Studio)或’Platform Target’ (Visual Studio)选项,使其与待测应用的设置相一致。如果你不知道待测程序的CPU/平台配置,首先试着将选项改为‘Any processor’或‘Any CPU’,然后分别尝试其它的选项。
原因5:
.NET Framework 4.0的扩展包是必需的,但没有安装。通常这种问题的征兆是控件通过单独的Ranorex Spy程序可以进行正确的识别,但不能被集成了Ranorex Spy或Recorder的Ranorex Studio识别。在.NET Framework4.0下开发应用程序在这种情况下会弹出一个受到技术限制的提示窗口:不能加载特定的程序集。
解决方法:
可以安装.NET Framework 4.0的扩展包,如果不能就使用Ranorex Spy和Recorder而不是使用集成了它们的Ranorex Studio。
原因6:
如果待测应用是在.NET Framework 4.0下创建的,那么一个<executableName>.exe.config的文件(其中<executableName>将被替换成Ranorex的可执行文件的名字)需要和Ranorex的可执行文件保存在同一个文件夹下。
解决方法:
创建并添加一个app.config配置文件,并与下面的内容一起添加到您的项目中。确保经过编译和执行可执行文件时有一个<executableName> exe.config文件在同一文件夹作为Ranorex可执行文件。以下为内容:
1 <configuration>
2 <startup useLegacyV2RuntimeActivationPolicy=”true”>
3 <supportedRuntime version=”v4.0″/>
4 <supportedRuntime version=”v2.0.50727″/>
5 </startup>
6 </configuration>
.NET Silverlight
Ranorex无法访问你Silverlight应用程序里面的UI对象。
解决方法:
请确保你的Silverlight应用程序的窗口将尽可能少的属性设置为“False” 。
Flash / Flex的应用程序
在使用调制向导激活Flash / Flex的插件后,Ranorex仍然无法识别到应用程序中的Flash / Flex元素。
原因1:
The AllowScriptAccess parameter in the HTML code that loads a SWF file controls the ability to perform outbound URL access from within the SWF file.
解决方法:
在PARAM或者 EMBED 标签中将该参数设置为’always’ 。
原因2:
你的Flash / Flex应用程序使用不同版本的Ranorex Flash组件调制了两次。
解决方法:
确保只使用了一个推荐的Flash / Flex调制方法。
基于Win32的应用程序
对基于Win32的应用支持有限的几个原因:
原因1:
自动化进程没有访问待测程序进程所需的安全权限,所以对该进程的UI元素的识别能力有限。
解决方法:
自动化进程( Ranorex可执行文件)和自动化应用程序(AUT)并非使用相同的安全权限进行启动,例如,不是同一个Windows用户。确保使用相同的权限启动这两个进程。
原因2:
自动化的程序和自动化进程中有不同的位宽度,无法启动32/64位桥。所以在该进程中的UI元素的识别能力有限。
解决方法:
请联系Ranorexsupport team团队获得更多的帮助。
原因3:
自动化的程序和自动化进程中有不同的位宽度,并且禁用了32/64位桥。所以在该进程中的UI元素的识别能力有限。
解决方法:
确保General Ranorex Settings启用了 32/64位桥。
浏览器(Mozilla Firefox, Google Chrome, Apple Safari)
Mozilla Firefox:
火狐浏览器中UI元素的识别能力有限。
解决方法:
请确保在Mozilla浏览器中你已安装并启用了Ranorex的插件。请参考Mozilla Firefox浏览器向导文档了解更多信息。
Google Chrome:
Google Chrome浏览器对UI元素的识别能力有限。
解决方法:
请确保你已经在你的Google Chrome浏览器中安装并激活了Ranorex Extension。请参阅Google Chrome安装向导文档了解更多信息。
Apple Safari:
Apple Safari浏览器对UI元素的识别能力有限。
解决方法:
请确保你已经在你的Apple Safari浏览器中安装并激活了Ranorex Extension。
请参阅Apple Safari调制向导文档了解更多信息。
图片相关的自动化或验证
Ranorex基于图片录制的能力是有限的,因为input event的异步分发不可用。
解决方法:
如果你基于图片的录制遇到问题,请在录制器设置对话框中激活asynchronous dispatching of mouse and keyboard events。
几何相关的问题
控件不显示,状态为空,或者自动化时在滚出视图。
解决方法:
把相应的对象库条目的(及其父文件夹)的属性‘Use Ensure Visible’设置为“False”,对应Repository Item Properties章中的描述。
Windows Apps (aka Windows 8 UI Apps)
导致基于Windows 8下UI的应用程序不能正确被识别可能有以下几个原因:
原因1:
测试可执行文件是通过Ranorex工具启动的,并且设置’Use UiaLauncher to elevate privileges for processes started by tools'(‘General Settings’ 对话框 -> ‘Advanced’ 页)是没有启用的。
解决方法:
启用提到的设置。
原因2:
Ranorex未安装在一个安全的位置。
解决方法:
把Ranorex安装到目录“Program Files”或“Program Files(x86 ) ”下 。
原因 3:
测试的可执行程序不是通过Ranorex工具来启动的。
解决方法1:
使用TestSuiteRunner启动测试套件。
解决方法2:
使用Ranorex UiaLauncher ( <Ranorex安装文件夹>\bin\Ranorex.UiaLauncher32.exe)来启动可执行文件,文件名作为测试的第一个参数。
例如: Ranorex.UiaLauncher32.exe <Solution Folder>\bin\debug\<Project Executable>.exe.
解决方法3:
把下面几行代码添加到项目(可执行的)文件Program.cs / Program.vb中:
C#
7 if (Ranorex.Core.Util.IsRestartRequiredForWinAppAccess)
8 return Ranorex.Core.Util.RestartWithUiAccess();
VB.NET
其它的软件
一些杀毒软件或安全软件的运行可能会导致Ranorex工具只能识别有限的对象。
原因1:
防病毒软件或安全软件会阻止部分Ranorex的功能。
解决方法:
给特定的Ranorex进程添加到例外中或暂时关闭特定的安全软件。