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模块的变通方法之前: