我正在寻找一个元素,如果元素不存在,我想给出一个体面的错误信息,说“元素不存在”;但它从块中出来并抛出一条消息,例如找不到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');
}
}
答案 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将无法像您期望的异步代码一样工作。