量角器 - 尝试捕获 - 错误处理

时间:2017-04-13 05:14:16

标签: protractor

我正在寻找一个元素,如果元素不存在,我想给出一个体面的错误信息,说“元素不存在”;但它从块中出来并抛出一条消息,例如找不到xpath的元素。

下面是我尝试过的代码,但我仍然遇到同样的错误。 例如a =量角器,如果值存在,则表示文本占优势 - 量角器;如果它不在那里,而不是说元素不存在/错误发生,它说“找不到元素element(by.xpath("//div[@title='"protractor"']"))后跟一个大的错误信息。 如何解决这个问题?

this.gridverify = function (a) {
        browser.sleep(10000);
        try {             
            var elm = element(by.xpath("//div[@title='" + a + "']"));
            if (elm.isPresent) {
                elm.getText().then(function (x) {
                    console.log("text Prevails: " + x);
                })
            }
            else {                   
                console.log('element not present');
            }
        }
        catch (err) {
            console.log('error occured');
        }
    }

2 个答案:

答案 0 :(得分:1)

尝试:

browser.wait(until.presenceOf(element(by.className("user-thumb"))),5000,'Element not present');

browser.wait(until.presenceOf(element(Add Locator here)),wait time,'Add Message you want to print in case element not found');

这可能会解决您的问题。

答案 1 :(得分:0)

考虑更深入地研究承诺。您的代码有很多错误。 http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/promise.html

this.gridverify = function (a) {
    browser.sleep(10000); // Why this needed? Can you update to .wait() ?
    var elm = element(by.xpath("//div[@title='" + a + "']"));
    elm.isPresent().then(present => {
        if (present) {
            elm.getText().then(function (x) {
                console.log("text Prevails: " + x);
            })
        } else {
            console.log('element not present');
        }
    }, err => {
        console.log('error occured', err);
    })
}

您的try / catch将无法像您期望的异步代码一样工作。