CodedUI Selenium QTAgent32.exe控件上存在过时元素引用异常
本文关键字:过时 元素 引用 异常 存在 Selenium QTAgent32 exe 控件 CodedUI | 更新日期: 2023-09-27 17:52:36
在Visual Studio, c#中,我做了这个测试:
BrowserWindow.CurrentBrowser = "chrome";
var browser = BrowserWindow.Launch(BaseURL + "/wizard");
var button = new HtmlButton(browser);
button.SearchProperties.Add(HtmlButton.PropertyNames.Id, "NewUser");
ClickButton(browser, "Login");
Playback.Wait(10000);
try {
bool exists = button.Exists;
} catch {}
ClickButton启动一个javascript函数:
1. Hides all of the buttons.
2. initiates an ajax promise.
3. On Success, redirects to a dashboard page
4. On failure, un-hides the buttons.
你可以想象,在点击登录按钮10秒后,"NewUser"按钮肯定消失了,因为我已经登录了。
如果我调试,我可以看到我得到一个StaleElementReferenceException。如果我运行测试,浏览器会显示QTAgent32.exe停止工作。
如果我注释掉按钮。
我真正尝试的是一个循环,它检查NewUser按钮是否存在,或者仪表板上是否存在一个字段,这样我就知道按钮单击的结果。
我的问题是当我运行测试时浏览器爆炸了
不要使用Exists,使用button.TryFind()
,它会给你一个布尔值,不会导致异常。
注意:这是我解决这个问题的缓慢过程:在搜索之前减少Playback.PlaybackSettings.SearchTimeout
,并在搜索完成后将其返回到默认值:
var def = Playback.PlaybackSettings.SearchTimeout;
Playback.PlaybackSettings.SearchTimeout = 1000;
{
Do workd
}
Playback.PlaybackSettings.SearchTimeout = def ;