【问题标题】:protractor + cucumber - element not visible even though element is visibleprotractor + cucumber - 即使元素可见,元素也不可见
【发布时间】:2017-04-12 13:33:27
【问题描述】:

 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!") }));
    });

我的测试在上述步骤中随机失败。对于上面的代码,在控制台窗口量角器打印“元素可见”。但是如果我在元素上执行点击事件,它会抛出 element is not visible 异常。

更新

问题已回答here

【问题讨论】:

  • 您好!请在问题中发布您的代码,而不是链接。图片链接坏了,一些网络(比如我的)阻止了它们。谢天谢地,我有一部手机,我可以在上面看到这个:)

标签: selenium jasmine protractor cucumber


【解决方案1】:

您的元素存在,但可能不可见。

试试这个:

return browser.wait(wagLoginPage.loginPage.signIn.isDisplayed().then(function (visible){
    //Your stuff
}

注意,我使用的是 isDisplayed()isPresent()

isPresent() 如果您要检查一个元素是否在页面上,但它可能可见也可能不可见,这很有用。

isDisplayed() 在您检查页面上是否可见元素时很有用。

【讨论】:

  • 使用 isDisplayed() 后,它仅在按钮可见时单击该按钮。但是,如果按钮不可见,则断言在 else 部分失败并突然停止测试执行,并出现以下错误 [15:41:58] E/launcher - 预期 false 为 true [15:41:58] E/launcher - AssertionError :预期 false 为 true。[15:41:58] E/launcher - 进程退出,错误代码为 199
  • 这个问题和this问题有关系吗?
  • @wswebcreation 在我看来是一个类似的项目,但问题不同
  • @mrfreester,来自同一个人和几乎相同的代码
  • 找到了这个问题的完整解决方案here
猜你喜欢
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多