找不到元素,元素无法处理等错误时如何在量角器中进行错误处理,WebDriverError:发生未知错误

时间:2018-11-01 09:32:39

标签: protractor cucumberjs

我已经在一个函数中执行了一些量角器脚本,并且该函数正在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。通过使用上面的代码,我能够捕获与description元素相关的错误,然后从该循环中退出计数并执行下一个循环计数。但是我无法对图像元素,按钮类型元素,按钮链接元素使用此错误捕获方法。因此,如何捕获与每个定位器元素相关的错误(如果有)以及是否存在错误发生,然后跳过该循环计数。谢谢。

1 个答案:

答案 0 :(得分:1)

量角器具有内置的“预期条件”,通过该条件,您可以使用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