protractor - 如何在量角器中进行错误处理,如未找到元素、元素不可处理、WebDriverError:发生未知错误
问题描述
我在函数中执行了一些量角器脚本,并且该函数在 for 循环中调用。因此,如果发生任何错误,例如找不到元素,元素不可处理,WebDriverError:发生未知错误:元素不可点击,那么我需要跳过该循环计数并需要执行下一个循环计数。我尝试使用 isPresent(),isDisplayed() 来捕获错误,但它不起作用,然后我尝试了下面的代码。
for(i=0; i<count; i++){
post(post_details[i].MediaUrl,post_details[i].CallToActionType,post_details[i].LPAID,post_details[i].CallToActionUrl);
}
post((MediaUrl,CallToActionType,LPAID,CallToActionUrl){
element(by.css(locators.locator_post_description)).sendKeys(Summary).then (function(){
if(MediaUrl!=null){
var path = require('path');
var type=MediaUrl.split("/");
var fileToUpload = '../files/' + (type[type.length-1]) ;
var absolutePath = path.resolve(__dirname, fileToUpload);
browser.sleep(3000);
element(by.css(locators.locator_post_img)).sendKeys(absolutePath);
browser.sleep(6000);
}
if(CallToActionType!=null){
browser.sleep(1000);
element(by.css(locators.locator_post_eventPostButton)).click();
browser.sleep(2000);
element(by.cssContainingText(locators.locator_post_buttonType,CallToActionType)).click();
browser.sleep(1000);
element(by.css(locators.locator_post_eventPostButtonLInk)).sendKeys(CallToActionUrl);
}
element(by.xpath(locators.locator_post_publishBtn)).click().then (function(){
browser.sleep(3000);
updatedb(LPAID);
});
},function(err) {
console.log("no summary...."+err);
return true;
});
}
在这里,我从 DB 中获取值(MediaUrl,CallToActionType,LPAID)并且我正在检查它的值是否为空。通过使用上面的代码,我能够捕获与描述元素相关的错误,然后退出该循环计数并执行下一个循环计数。但是我无法对图像元素、按钮类型元素、按钮链接元素使用此错误捕获方法。那么我如何捕获与每个定位器元素相关联的错误(如果有)以及如果发生错误,那么跳过该循环计数。提前致谢。
解决方案
Protractor 内置了预期条件,您可以使用它与 browser.wait() 一起处理您的问题。参考下面的代码和链接:
var EC = protractor.ExpectedConditions;
var button = $('#xyz');
var isClickable = EC.elementToBeClickable(button);
browser.get(URL);
browser.wait(isClickable, 5000); //wait for an element to become clickable
button.click();
文档 - https://www.protractortest.org/#/api?view=ProtractorExpectedConditions
推荐阅读
- plsql - 页面项目中带有问号的菱形
- python - 按关键字对 2d numpy 字符串数组进行排序
- r - 仅引用 R 中 str_extract_all 中的最后一个匹配项
- reactjs - 无法使用 amqplib 库在 ReactJs 中连接 rabbitMQ
- bash - 1>/dev/null 和 >/dev/null 和 &>/dev/null
- javascript - 某些节点具有多个父节点的垂直图
- specflow - 两个给定步骤之间的规范流挂钩
- shell - 以下 shell 脚本行是什么意思?
- docker - Docker 容器无法启动 > FATA 008 无法初始化本地 MSP
- java - 更新 build.gradle 会从类路径中删除库