Если какой-либо элемент не существует в 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.
Я попытался это тоже не работает –
Возможный дубликат http://stackoverflow.com/questions/7991522/selenium-webdriver-test-if-element-is-present – Sebastian
У вас есть implicitWait() где-то установлен? На что он настроен? – JeffC