量角器 + 黄瓜 - 即使元素可见,元素也不可见
protractor + cucumber - element not visible even though element is visible
this.When(/^the user clicks on login button$/, function () {
return browser.wait(wagLoginPage.loginPage.signIn.isPresent().then(function (visible) {
if(visible){
console.log("element is visible !!!!!!!");
wagLoginPage.loginPage.signIn.click().then(function(){
expect(visible).to.be.true;
});
}
else{
expect(visible).to.be.true;
}
}, function () { chai.assert.isFalse(true, "SingIn is not visible!") }));
});
我的测试在上述步骤中随机失败。对于上面的代码,在控制台 window 量角器打印 'element is visible'。但是如果我在元素上执行 click 事件,它会抛出 element is not visible 异常。
更新
问题得到解答
您的元素存在,但可能不可见。
试试这个:
return browser.wait(wagLoginPage.loginPage.signIn.isDisplayed().then(function (visible){
//Your stuff
}
请注意,我使用的是 isDisplayed() 与 isPresent()。
isPresent() 如果您正在检查某个元素是否在页面上,但可能会或可能不可见,那么它很有用。
isDisplayed() 如果您正在检查某个元素在页面上是否可见,则很有用。
this.When(/^the user clicks on login button$/, function () {
return browser.wait(wagLoginPage.loginPage.signIn.isPresent().then(function (visible) {
if(visible){
console.log("element is visible !!!!!!!");
wagLoginPage.loginPage.signIn.click().then(function(){
expect(visible).to.be.true;
});
}
else{
expect(visible).to.be.true;
}
}, function () { chai.assert.isFalse(true, "SingIn is not visible!") }));
});
我的测试在上述步骤中随机失败。对于上面的代码,在控制台 window 量角器打印 'element is visible'。但是如果我在元素上执行 click 事件,它会抛出 element is not visible 异常。
更新
问题得到解答
您的元素存在,但可能不可见。
试试这个:
return browser.wait(wagLoginPage.loginPage.signIn.isDisplayed().then(function (visible){
//Your stuff
}
请注意,我使用的是 isDisplayed() 与 isPresent()。
isPresent() 如果您正在检查某个元素是否在页面上,但可能会或可能不可见,那么它很有用。
isDisplayed() 如果您正在检查某个元素在页面上是否可见,则很有用。