【问题标题】:Protractor click element only when present量角器单击元素仅在存在时
【发布时间】:2016-03-23 20:05:51
【问题描述】:

好的,所以我认为这很容易,但我花了几个小时搜索和尝试不同的方法,但无济于事。我需要告诉量角器仅在按钮存在时单击它。为了淡化它,我的测试基本上检查页面上是否存在某个值。页面可以处于两种状态之一,自动模式,其中包含我正在测试的值或设计模式,其中包含与此测试无关的其他值。如果它处于设计模式,我们首先需要单击自动模式,这会产生一个提示,询问我们是否确定要继续并切换到自动模式 - 此提示包含我需要检查并单击的继续按钮。但是,如果页面已经处于自动模式,我不需要执行此检查,我可以继续验证天气或我的值不存在。基本上我试过这个:

if (continueButton.isDisplayed()) {
continueButton.click(); 
} 

会发生什么我收到“使用定位器找不到元素:...”错误。我尝试了几种不同的方法,例如使用 isElementPresent 和一些预期的条件选项,但或多或​​少得到了相同的结果。如何实现这种情况,我的测试检查按钮是否存在并单击它,如果不存在则继续测试。

【问题讨论】:

    标签: angularjs protractor


    【解决方案1】:

    browser.wait()elementToBeClickable Expected Condition 可能会有所帮助:

    var EC = protractor.ExpectedConditions;
    browser.wait(EC.elementToBeClickable(continueButton), 5000);
    
    continueButton.click();
    

    【讨论】:

    • 嗨,alecxe,我试过这个,但它没有按我预期的方式工作。当没有遇到按钮时,测试仍然会停止。 KCaradonna 的解决方案对我有用。感谢您的回复。
    【解决方案2】:

    您可以通过使用 Promise 来实现这一点。

        continueButton.isDisplayed().then(function (isDisplayed) {
            if(isDisplayed){
            continueButton.click();
            }
        });
    

    【讨论】:

    • 感谢 KCaradonna,很抱歉回复晚了。经过一些调整,这对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多