CodedUI Selenium QTAgent32.exe陈旧元素参考控件上的异常存在

时间:2015-06-01 22:40:50

标签: c# selenium-webdriver coded-ui-tests

在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按钮,或者是否存在仪表板上的字段,所以我知道按钮点击的结果。

我的问题是,当我运行测试时,浏览器会爆炸。

1 个答案:

答案 0 :(得分:0)

使用button.TryFind()而不是使用Exists,它将为您提供一个布尔值,并且不会导致异常。

注意:这是我的过程缓慢 - 解决这个问题: 在搜索之前减少Playback.PlaybackSettings.SearchTimeout并在搜索完成后将其恢复为默认值:

    var def = Playback.PlaybackSettings.SearchTimeout;
    Playback.PlaybackSettings.SearchTimeout = 1000;
    {
       Do workd
    }
    Playback.PlaybackSettings.SearchTimeout = def ;