无法访问网页编码的 UI 错误

本文关键字:UI 错误 编码 网页 访问 | 更新日期: 2023-09-27 18:36:04

>我正在运行一个编码的 UI 测试,该测试单击超链接,例如,"主页"然后关闭并在网页上执行一些不同的事情,然后尝试单击完全相同的"主页"链接并抛出一个错误,指出

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

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

E, 6468, 13, 2013/10/18, 15:08:47.406, 271797587803, QTAgent32_40.exe, IEDOM : 确保对 html 节点有效失败: A, 52

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

知道是什么导致这种情况发生吗?

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

失败的代码行,这第一次有效,但在测试中第二次执行时无效。

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

请记住,用于 UIHome超链接映射控件的搜索属性在第二次执行这些行时完全相同。Mouse.Click() 执行是在 VS2012 中抛出"网页不可用"错误时执行。

无法访问网页编码的 UI 错误

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

因此,这个问题的"解决方案"是每次进入页面时强制重新打开整个映射UI___Window。编码的 UI 通过每次检查控件是否为 null(如果是,则控件是新控件)来防止设计器文件中出现这种情况。如果不是,则编码的 UI 使用相同的控件及其首次定义/发现时的属性。希望这对遇到此错误问题的其他任何人有所帮助。

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

在另一个工作站(W7)上,调用.GetParent()两次时会引发另一个异常,关于IE版本应该超过10位版本的Windows上的IE64,这显然是无稽之谈,因为计算机安装了IE11。