【问题标题】:Click element until another element is displayed using isDisplayed单击元素,直到使用 isDisplayed 显示另一个元素
【发布时间】:2015-10-03 03:39:05
【问题描述】:

我想单击返回按钮,直到我到达我的应用程序中的特定页面(我的expectedElement 所在的位置)。这似乎不起作用...

因为找不到预期的元素而失败。

function navigateBack() {
    var backButton = $('div.back');
    var expectedElement = $('span.some-specific-class');

    backButton.click().then(function () {
        if (expectedElement.isDisplayed()) {
            expectedElement.click();
        } else {
            navigateBack();
        }
    });
}

我做了一点修改,在isDisplayed() 上使用了一个promise。对缺少的元素调用isDisplayed() 时,Protractor 会抛出错误...

var expectedElement = $('span.some-specific-class');

expectedElement.isDisplayed().then(function(isDisplayed) {
    if(isDisplayed)
        console.log('isDisplayed');
});

所以,除非这是无效的语法,否则如果量角器会在调用 isPresent() / isDisplayed() 时抛出错误,你如何检查元素是否存在或显示?!?

【问题讨论】:

    标签: javascript angularjs selenium-webdriver promise protractor


    【解决方案1】:

    这样的事情对你有用吗?

    function navigateBack() {
    var EC = protractor.ExpectedConditions;
    var isVisible = EC.visibilityOf(expectedElement);
    var backButton = $('div.back');
    var expectedElement = $('span.some-specific-class');
    
    backButton.click().then(function () {
        browser.wait(isVisible, 5000, "failed to wait for element").then(function(result) {
            if(result){
                expectedElement.click();
            } else {
                navigateBack();
            }
        });
    });
    

    }

    【讨论】:

    • 我试过了,但我不相信browser.wait 对我有用吗?我真的不需要在页面上等待元素出现。我在页面之间导航,我认为量角器会自己处理这个问题
    • 是的,我想我一直不得不使用等待的原因是 b/c 我正在测试的应用程序不是 Angular 应用程序,所以我不得不使用预期的条件。
    【解决方案2】:

    Handle the errorisDisplayed()抛出:

    function navigateBack() {
        var backButton = $('div.back');
        var expectedElement = $('span.some-specific-class');
    
        backButton.click().then(function () {
            expectedElement.isDisplayed().then(function (isDisplayed) {
                if (isDisplayed) {
                    expectedElement.click();
                } else {
                    navigateBack();
                }
            }, function (err) {
    
            });
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多