首页 > 解决方案 > 如何在量角器中进行错误处理,如未找到元素、元素不可处理、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)并且我正在检查它的值是否为空。通过使用上面的代码,我能够捕获与描述元素相关的错误,然后退出该循环计数并执行下一个循环计数。但是我无法对图像元素、按钮类型元素、按钮链接元素使用此错误捕获方法。那么我如何捕获与每个定位器元素相关联的错误(如果有)以及如果发生错误,那么跳过该循环计数。提前致谢。

标签: protractorcucumberjs

解决方案


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


推荐阅读