2

我正在运行一个单击超链接的编码 UI 测试,例如,“主页”然后关闭并在网页上执行一些不同的操作,然后尝试单击完全相同的“主页”链接并抛出错误说

无法访问网页。如果页面正在刷新,请等待页面刷新后再执行操作。

现在我在逐步完成测试时得到了这个,所以我知道在试图点击这个链接的时候页面没有刷新。挖掘 UITest 错误日志,我每次在引发浏览器刷新错误之前都会看到这一行:

E, 6468, 13, 2013/10/18, 15:08:47.406, 271797587803, QTAgent32_40.exe, IEDOM: html 节点的 EnsureValid 失败: A, 52

我已经比较了这个链接的 uitest 映射,属性都是相同的,页面 html 也是相同的。我在 IE10 中运行,KB2879017。VS2012 4 遥控。

任何想法是什么导致这种情况发生?

注意:WaitForControlReady() 不会阻止这种情况的发生。硬编码的 Playback.Wait() 也无济于事。

失败的代码行,这是第一次工作,但不是第二次在测试中执行。

this.UIWindow.UIDocument.UIHomeHyperlink.WaitForControlReady();
Mouse.Click(this.UIWindow.UIDocument.UIHomeHyperlink);

请记住,用于 UIHomeHyperlink 映射控件的搜索属性在第二次执行这些行时完全相同。Mouse.Click() 执行是在 VS2012 中抛出“Web page not available”错误时。

4

2 回答 2

1

经过一些头脑风暴和反复试验后,得出的结论是映射控件在页面上找到后会保留属性。出于某种原因,这些属性与第二次时的页面属性不完全匹配。

所以这个问题的一个“解决方案”是每次我们进入页面时强制重新启动整个映射的 UI___Window。编码的 UI 通过检查控件是否每次都为空来防止在设计器文件中发生这种情况,如果是则控件是新的。如果不是,那么 Coded UI 使用相同的控件和它的属性,从它第一次定义/发现时开始。希望这可以帮助其他遇到此错误问题的人。

于 2013-10-23T14:36:43.973 回答
0

在同一对象树上调用两次时,CodedUI 中似乎也存在错误.GetParent(),这会导致引发此异常。我们通过以另一种方式确定父级来解决它。

在另一个工作站(W7)上,调用.GetParent()两次时抛出另一个异常,关于 IE 版本在 64 位版本的 Windows 上应该高于 IE10,这显然是胡说八道,因为计算机安装了 IE11。

于 2016-06-21T09:19:25.487 回答