如何在量角器中处理错误,如找不到元素,元素不可处理,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(,并检查其值是否为null。通过使用上面的代码,我能够捕捉到与描述元素相关联的错误,然后退出该循环计数并执行下一个循环计数。但我不能对图像元素、按钮类型元素、按钮链接元素使用这种错误捕捉方法。那么,我如何捕捉与每个定位器元素相关的错误(如果有的话(,如果发生了错误,则跳过循环计数。提前谢谢。

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

相关内容