Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问该网页。编码用户界面错误_C#_Coded Ui Tests - Fatal编程技术网

C# 无法访问该网页。编码用户界面错误

C# 无法访问该网页。编码用户界面错误,c#,coded-ui-tests,C#,Coded Ui Tests,我正在运行一个编码的UI测试,它单击一个超链接,例如,“Home”然后熄灭,在网页上执行一些不同的操作,然后尝试单击完全相同的“Home”链接,并抛出一个错误 无法访问该网页。如果页面正在刷新,请 等待页面刷新,然后对其执行操作 现在,当我通过测试时,我得到了这一点,因此我知道在试图单击此链接时,页面没有刷新。在每次抛出浏览器刷新错误之前,我都会在UITest错误日志中看到这一行: E、 6468132013/10/1815:08:47.406271797587803,QTAgent32_40.

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

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

现在,当我通过测试时,我得到了这一点,因此我知道在试图单击此链接时,页面没有刷新。在每次抛出浏览器刷新错误之前,我都会在UITest错误日志中看到这一行:

E、 6468132013/10/1815:08:47.406271797587803,QTAgent32_40.exe, IEDOM:EnsureValid对html节点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中抛出“网页不可用”错误时执行的。

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


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

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


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

我认为最好是发布代码。添加我正在执行的代码行,第一行按预期执行,页面已完全加载并继续使用鼠标。Click()方法。FilterProperty是否相同?窗口标题相同吗?偶尔会有一些会话数据使“相同”对象实际上有所不同。窗口标题和筛选器属性完全相同,我有一个类似的测试,从未离开页面,但在选择不同的rad按钮(此处无postbac)后需要单击同一按钮两次,并抛出相同的错误。我想如果过滤道具不正确,我会得到一个UITestControlNotFound异常,不是吗?我也有同样的问题。你能解释一下你的新想法吗?我只是在使用UIMap.Designer.cs中生成的测试,通常当测试运行时,它会在鼠标上失败。这是测试过程中第一次遇到该按钮。如果测试运行一次,工作正常,然后再次运行,这可能就是您描述的第二次遇到同一控件的地方。但是您是说在某种意义上是“new UIMap()”?如果查看生成的设计器文件,您将看到第一次访问控件时,它存储在一个私有变量中。如果您再次尝试访问它,它将使用以前存储的值,有时会导致查找控件时出现问题。我所做的是在测试中使用映射时创建映射的属性,每次该属性被称为映射的新闻。示例:MapObject.UITestControlObject,每次调用MapObject时都会更新该映射,从某种意义上说,上次访问它时会清除存储的控件。