附录F:错误代码及解释

可以点击错误代码查看错误的解决方案。

错误代码 错误名称 错误解释
1001 ObjectNotExist 没有找到对象,或者对象不存在。通常是由于目标控件不可见,或是控件内部变化引起的识别属性不匹配。前者常见于如未展开的下拉框选项、树形图节点、子菜单栏等等;后者常见于对象的标识属性中包含一些动态的、可变的参数,导致控件操作或应用重启后无法匹配。
1002 ObjectIsOutOfScreen 控件超出屏幕。通常是由于目标控件不在屏幕中,可能由于目标窗口没有全屏运行或者部分位于屏幕外。
1003 CannotPerformThisOperation 无法执行该操作。
1004 ObjectIsReadOnly 对象是只读的无法修改。
1005 ItemNotExistInList 项目不存在。在使用项目名索引List、ComboBox等存在多个子控件的控件时,使用控件名字没有匹配到合适的项目。
1006 OutOfRange 索引超出数组长度,使用的索引超出了列表或树的长度。
1007 Others 其它原因。
1008 InvalidArgument 不合法的参数。
1009 CannotFindTestObjectInModel 在模型文件中无法找到相关的测试对象。通常是对象名词拼错,或者模型文件中的更改未保存。
1010 InvalidRunContext 不合法的运行上下文。
1011 InvalidObjectType 不合法的对象类型。
1012 NoLicenseAndOutOfFreeQuota 到达许可版本的最大限制。即对象识别、图像识别等API的调用次数到达上限,需要升级许可类型来解除限制。
1013 DuplicateTestObjectFound 模型树中有重名的控件对象。
1014 InvalidTestObjectType 不合法的测试对象类型。通常是由于获取对象的方法与对象的类型不一致。
1015 InvalidConditionString 不合法的条件字符串。
1016 StringTooLong 字符串太长。
1017 DontKnowHowToHandleTheCall 未知的调用请求。
1018 ApplicationNotExist 应用不存在。
1019 MissingOrInvalidPatternImage 图案模板图片不存在或格式不正确。
1020 FileNotExistOrInvalid 文件不存在或不正确。
1021 InsufficientPermission 没有足够的权限。
1022 InvalidModelObject 不正确的模型对象。
1023 NeedLicense 该操作需要许可证书. 可联系我们(https://www.cuketest.com/contactus)获得试用许可或购买。
1024 InvalidModelImage 模型中对象的截屏文件不存在
1025 ItemNotInView 该项目在控件可视区域外
1026 PluginNotLoaded 无法连接到应用,相关自动化插件可能未加载
1027 PluginNotLoaded 无法连接到远程地址,可能是地址有误,或者远程设备不在线
1028 InvalidFileFormat 文件格式错误
1029 CannotLaunchProcess 启动应用失败,可能是路径不存在或不合法。

错误诊断和解决方案

1001: ObjectNotExist,对象不存在,子对象名称的父对象父对象名称

最常见的错误信息,没有找到对象,或者对象不存在。通常是由于:

  1. 目标控件不可见,常见于如未展开的下拉框选项、树形图节点、子菜单栏等等;
  2. 控件内部变化引起的识别属性不匹配,常见于对象的标识属性中包含一些动态的、可变的参数,导致控件操作或应用重启后无法匹配。

无论是上述哪种情况,都可以打开模型管理器来诊断。假设该控件的对象名称为目标对象

1. 还原错误现场

当出现对象不存在的错误以后,不要关闭被测应用,打开模型管理器(点击项目中的.tmodel文件)进行诊断。

2. 定位问题原因

打开模型管理器后,在模型树中选中目标对象并高亮。根据高亮(如果目标是右键菜单、下拉框选项一类的派生控件,可以用延迟执行高亮)的情况进行下一步诊断:

  • (小概率情况)可以高亮。这种情况说明控件是可以被正确匹配,则问题出现在脚本中,检查操作该控件之前,是否有使目标控件正确展开。如:目标控件是嵌套的树节点,就要先展开到树节点可见为止(比如调用scrollIntoView()方法)。
  • (大概率情况)无法高亮。这个时候最简单的方法,就是一层一层的向上高亮目标对象的父控件们,找到从哪一层级高亮开始出现异常(无法高亮或高亮错位)。如果只有目标对象无法高亮,那么可以直接调整目标对象的识别属性。

3. 调整对象属性

如果目标对象无法高亮,可以检查标识属性是否不合理,比如动态属性。

动态属性即控件在应用每次重启、运行过程中会频繁受到影响进而改变的属性,常见的比如应用窗口的title属性常常会根据打开的项目或文件改变,就不适合作为标识属性。

对于这些动态的标识属性,可以将其直接删掉;或者调整为正则匹配模式,从而进行部分属性的匹配。

4. 添加索引

如果目标对象高亮的位置不正确,那很可能是因为应用中存在很多属性与目标对象相同的控件。可以在模型管理器的状态栏中看到具体的匹配个数。

在匹配到多个控件的情况下,可以引入索引属性index,该属性代表操作匹配到多个控件时的第几个结果。默认索引index为0,也就是会自动高亮和操作第一个控件。

也可以在侦测时使用自动添加索引功能来完成这些工作。

1002: ObjectIsOutOfScreen 控件超出屏幕。

通常是由于目标控件不在屏幕中,可能由于目标窗口没有全屏运行或者窗口有部分位于屏幕外。

在一些桌面应用框架的底层实现中,菜单控件从来不会消失,而是移出屏幕,这个时候选择高亮该菜单的话,会发现不是提示1001: ObjectNotExist错误而是当前的1002错误。

1003: CannotPerformThisOperation 无法执行该操作。

CukeTest对于某些桌面应用框架提供了增强方法,这些方法无法在支持的框架以外调用,否则就会提示当前的1003错误。因为这些方法都是增强方法,因此也可以使用其它方法的组合来完成一样的任务。

1004: ObjectIsReadOnly 对象是只读的无法修改。

对无法编辑的文本控件调用set()方法时会出现。如果你确认目标控件允许手动编辑,需要检查是否侦测到了正确的可编辑控件(文本框Edit、多行文本框DocumentTextArea)。

如果目标是需要双击或进行其它操作后才可以编辑的控件,可以在侦测前按住CTRL键操作,操作完成后松开CTRL键进行侦测。(参考使用Ctrl键侦测弹出/派生控件。)

1005: ItemNotExistInList 项目不存在。

在使用项目名搜索并操作List、ComboBox等存在多个子控件的控件时,使用控件名字没有匹配到合适的项目。

如果控件中的内容不是一次性加载,而是在滚动到底部才会继续加载更多的内容,那么这个错误将更容易出现。

对于这类延时加载(或者叫懒加载、异步加载)的列表,可以参考演练:操作Qt应用中的List中的自动化方式。

1006: OutOfRange 索引超出数组长度。

在使用项目索引来匹配并操作List、ComboBox等存在多个子控件的控件时,使用的索引超出了列表或树的长度。

如果控件中的内容不是一次性加载,而是在滚动到底部才会继续加载更多的内容,那么这个错误将更容易出现。

对于这类延时加载(或者叫懒加载、异步加载)的列表,可以参考演练:操作Qt应用中的List中的自动化方式。

1007: Others 其它原因。

无法分类的错误原因,可以向我们报告问题,并附上具体的错误报告信息。

1008: InvalidArgument 不合法的参数。

1009: CannotFindTestObjectInModel 在模型文件中无法找到相关的测试对象。通常是对象名词拼错,或者模型文件中的更改未保存。

1010: InvalidRunContext 不合法的运行上下文。

1011: InvalidObjectType 不合法的对象类型。

1012: NoLicenseAndOutOfFreeQuota 到达许可版本的最大限制。即对象识别、图像识别等API的调用次数到达上限,需要升级许可类型来解除限制。

1013: DuplicateTestObjectFound 模型树中有重名的控件对象。

1014: InvalidTestObjectType 不合法的测试对象类型。通常是由于获取对象的方法与对象的类型不一致。

1015: InvalidConditionString 不合法的条件字符串。

1016: StringTooLong 字符串太长。

1017: DontKnowHowToHandleTheCall 未知的调用请求。

1018: ApplicationNotExist 应用不存在。

在Qt自动化时,如果出现了这个错误,可能是以下几个原因中的某个导致的。

被测应用的确未启动

如果被测应用的确没启动,那么可能是:

  1. 被测应用路径不正确或被测应用不支持当前的启动方式。

被测应用的确成功启动了

如果被测应用启动了但是扔报这个错误,则说明启动过程中Qt Agent没有成功加载,有以下几种可能的原因。

  1. 当前CukeTest实例的Qt服务未启动,通过检查主界面左下角状态栏的Qt: 0是否显示来判断,如果未启动可以点击重新启动。
  2. 被测应用的Qt Agent没有成功加载,没有加载的情况有很多种可能。可以尝试手动加载Qt Agent,如果能够加载,那么可以在脚本中使用winHookProcess()方法来再次加载Qt Agent;如果不能够加载,说明被测应用无法加载Qt Agent,请寻求技术支持。

1019: MissingOrInvalidPatternImage 图案模板图片不存在或格式不正确。

1020: FileNotExistOrInvalid 文件不存在或不正确。

1021: InsufficientPermission 没有足够的权限。

1022: InvalidModelObject 不正确的模型对象。

1023: NeedLicense: 该操作需要许可证书. 可联系我们(https://www.cuketest.com/contactus)获得试用许可或购买。

1024: InvalidModelImage: 模型中对象的截屏文件不存在

1025: ItemNotInView: 该项目在控件可视区域外

1026: PluginNotLoaded: 无法连接到应用,相关自动化插件可能未加载

1027: PluginNotLoaded: 无法连接到远程地址,可能是地址有误,或者远程设备不在线

1028: InvalidFileFormat: 文件格式错误

1029: CannotLaunchProcess: 无法启动应用

使用Util.launchProcess()QtAuto.launchQtProcess()方法时,由于传入的路径不正确,或目标路径的文件无法被执行。大多数时候都是由于路径中的反斜杠\引起的,由于Windows操作系统默认的文件路径使用反斜杠\作为分隔符,在脚本中使用时需要转义,因此假设目标应用路径为C:\Windows\notepad.exe。那么它的启动脚本应该写作:

JavaScript
Util.launchProcess("C:\\Windows\\notepad.exe")

为了避免手写路径出错,可以使用工具箱中提供的启动应用功能块。

results matching ""

    No results matching ""