我正在自动执行一个用户单击“计算”按钮的测试。
计算出许多值,这些值随后显示在新的网格中。手动单击该计算大约需要4秒钟,额外的控件才会显示在屏幕上。
当我运行测试时,正确单击了按钮,但是此后应用程序冻结了。
我试过了:
WaitForControlReady
WaitForControlEnabled
WaitForControlVisible
WaitForControlExist
TryGetClickablePoint
线程睡眠
播放等待
Playback.PlaybackSettings.DelayBetweenActions
在(!TryGetClickablePoint())进行{Thread.Sleep}
重试
一切都没有成功。
计算按钮将调用javascript方法(带有延迟/承诺),而javascript方法将依次调用c#方法进行实际计算。
单击后,如果没有Playback.Wait(5000),则不会生成指向c#代码的http.post。
因此,我等待了5秒钟,现在正在拨打电话,并且可以看到响应进入。但是,未按下“ .then”(或“ .finally”)。
我看过这里CodedUI Test- Mouse.Click() on control dose not give expected outcome
在这里Coded UI Tests - Clicking button does suddenly not work,但我无法从这两个中推论出一种解决方案。
任何帮助将不胜感激。
最佳答案
一旦浏览器打开,CodedUI就会注入JavaScript,不幸的是,这破坏了Ajax调用的处理方式并破坏了站点。
您需要将以下内容添加到您的app.config中
<add key="WebWaitForReadyLevel" value="3"/>
https://fluentbytes.com/how-to-prevent-codedui-tests-from-breaking-angular-ajax-calls/