2015-10-20 2 views
0

Если какой-либо элемент не существует в Selenium Testing, то я не могу его обработать. Я пробовал этот код.Selenium Testing: Если элемент отсутствует, исключение не обрабатывается Исключением типа NoSuchElementException в Selenium

public static bool IsElementPresent(IWebDriver driver, By by) 
    { 
     try 
     { 
      driver.FindElement(by); 
      return true; 
     } 
     catch (NoSuchElementException) 
     { 
      return false; 
     } 
     catch (Exception ex) 
     { 
      return false; 
     } 
    } 

Это показывает исключение тайм-аута занимает слишком много времени, более 1 мин и, наконец, обрабатывается основным классом Exception, но мой автоматизации тестирования останавливается, и я не хочу, чтобы остановить мое тестирование.

Я также пробовал этот фрагмент кода.

public bool IsElementPresent(IWebDriver driver, By by, TimeSpan? timeSpan) 
{ 
    bool isElementPresent = false; 
    try 
    { 
     if (timeSpan == null) 
     {      
      timeSpan = TimeSpan.FromMilliseconds(2000); 
     } 
     var driverWait = new WebDriverWait(driver, (TimeSpan)timeSpan);      
     driverWait.IgnoreExceptionTypes(typeof(WebDriverTimeoutException)); 
     isElementPresent=driverWait.Until(x => x.FindElements(by).Any()); 
     return isElementPresent; 
    } 
    catch (NoSuchElementException nex) 
    { 
     return false; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 

Что я должен делать, чтобы в течение небольшого промежутка времени он возвращал true или false.

+0

Я попытался это тоже не работает –

+1

Возможный дубликат http://stackoverflow.com/questions/7991522/selenium-webdriver-test-if-element-is-present – Sebastian

+0

У вас есть implicitWait() где-то установлен? На что он настроен? – JeffC

ответ

1

Другим вариантом было бы что-то вроде

return driver.FindElements(by).length > 0; 
0

Я обычно используют Отображаемое свойство. Я использую объектную модель страницы с заранее определенными IWebElements в примере ниже:

public bool IsPageObjectPresent(IWebElement PageObject) 
    { 
     try 
     { 
      if (PageObject.Displayed) 
      { 
       Console.WriteLine("Element is displayed"); 
       return true; 
      } 
      else 
      { 
       Console.WriteLine("Element present but not visible"); 
       return true; 
      } 
     } 
     catch (NoSuchElementException) 
     { 
      Console.WriteLine("Element not present"); 
      return false; 
     } 
     catch (StaleElementReferenceException) 
     { 
      Console.WriteLine("Stale element present"); 
      return false; 
     } 
    } 
+0

Его также не работает, когда элемент отсутствует, Исключение времени, я хочу проверить наличие или отсутствие элемента с максимальным интервалом в 10 секунд. –

-1
 try{ 

     // Add your complete portion of code here // 

     System.out.println("Portion of code executed Successfully"); 
     } 
     catch(Exception name) 
     { 
     System.out.println("Portion of code failed"); 
     } 

Пожалуйста, попробуйте и дайте мне знать .......

+0

Если элемент не найден, исключение не обрабатывается, всегда ошибка таймаута через несколько минут. –

Смежные вопросы