量角器 + 黄瓜 - 即使元素可见,元素也不可见

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() 如果您正在检查某个元素在页面上是否可见,则很有用。