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

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(protractor.ExpectedConditions.invisibilityOf($('#txtUsername')), 20000, 'Element never disappeared')等待包含登录表单的引导程序模式关闭。但是,这条线被证明是非常脆弱的,偶尔会失败:


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


甚至:


  StaleElementReferenceError:过时的元素引用:元素未附加到页面文档


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


  期望检查元素在DOM上是否不可见或不存在。


我如何使这条线坚固?

最佳答案

invisibilityOf切换到stalenessOf达到了目的。

07-28 08:00