Javascript 量角器片状物不可见,投掷无柄入侵者

Javascript 量角器片状物不可见,投掷无柄入侵者,javascript,twitter-bootstrap,protractor,Javascript,Twitter Bootstrap,Protractor,我正在使用量角器测试一个非角度应用程序,在测试中我有一个类似于以下内容的登录助手功能: function login() { return waitUntilVisible($('#txtUsername')) .then(function () { $('#txtUsername').sendKeys('tom'); }) .then(function () {

我正在使用量角器测试一个非角度应用程序,在测试中我有一个类似于以下内容的登录助手功能:

function login() {
        return waitUntilVisible($('#txtUsername'))
            .then(function () {
                $('#txtUsername').sendKeys('tom');
            })
            .then(function () {
                $('#txtPassword').sendKeys('*');
            })
            .then(function () {
                $('#btnLogin').click();
            })
            .then(function () {
                // this is the flaky line
                return browser.wait(protractor.ExpectedConditions.invisibilityOf($('#txtUsername')), 20000, 'Element never disappeared');
            });
    }
其中
browser.wait(gragrator.ExpectedConditions.invisibilityOf($(“#txtexsername”)、20000、“元素从未消失”)
等待包含登录表单的引导模式关闭。然而,事实证明,这条路线非常脆弱,偶尔会在以下方面失败:

NoSuchElementError:使用定位器By.cssSelector(“txtUsername”)未找到任何元素

甚至:

StaleElementReferenceError:stale元素引用:元素未附加到页面文档

我的第一个想法是模态在调用行之前关闭,但是,
invisibilityOf
的文档建议它应该处理不存在的元素,声明如下:

检查元素在DOM中是否不可见或不存在的期望


如何使这一行变得健壮?

的不可见性
切换到
的过时性
已经做到了这一点。

函数
的可见性
TextToBepresentElement
不是原子的,可能会产生错误。在内部,它们按顺序检查
isPresent
isDisplayed
/
getText
,但如果在这些检查之间恰好删除了一个元素,则会发生
noTouchElementEnterRor
StaleElementReferenceError

此错误可能在将来的版本中修复。在使用我包装为npm模块的变通方法之前: