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

时间:2013-10-18 21:07:36

标签: c# coded-ui-tests

我正在运行一个Coded UI测试,点击一个超链接,例如,“Home”然后关闭并在网页上做了一些不同的事情,然后尝试点击完全相同的“Home”链接,错误是扔了说

  

无法访问网页。如果页面令人耳目一新,请   等到页面刷新然后对其执行操作。

现在,当我逐步完成测试时,我得到了这个,所以我知道此链接正在尝试点击该页面并不令人耳目一新。挖掘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 RC。

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

注意:WaitForControlReady()没有做任何事情来阻止这种情况发生。此外,硬编码的Playback.Wait()也没有帮助。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

在另一个工作站(W7)上,在调用.GetParent()两次时抛出另一个异常,因为IE版本应该比64位版本的Windows上的IE10更多,这显然是无稽之谈,因为计算机安装了IE11 。