public void SelectItemByText(string text)
{
try
{
var selectElement = new SelectElement(BitrixFramework.FindWebElement(this));
var allOptionsThatHaveText = selectElement.Options.Where(se => se.Text.Equals(text, StringComparison.OrdinalIgnoreCase));
if (allOptionsThatHaveText.Any())
{
foreach (var option in allOptionsThatHaveText)
{
try
{
option.Click();
}
catch (StaleElementReferenceException)
{
Log.MesQuestion("Изменился DOM страницы, и элемента " + this.description + " больше нет в кеше. Подождем 5 сек и попробуем найти его ещё разок");
BitrixFramework.Wait(5);
try
{
option.Click();
}
catch
{
Log.MesError("Не найден объект \"" + this.description + "\" по пути \"" + this.by.ToString() + "\"");
throw;
}
}
}
Log.MesNormal(String.Format("'{0}' -> Выбрано значение '{1}'", description, text));
//проверяем страницу на наличие ошибок
BitrixFramework.CheckJSErrors();
GM.CheckContentOnErrors();
return;
}
var optionWithText = selectElement.Options.Where(option => option.Text.IndexOf(text, StringComparison.OrdinalIgnoreCase) >= 0);
if (optionWithText.Any())
{
foreach (var option in optionWithText)
{
try
{
option.Click();
}
catch (StaleElementReferenceException)
{
Log.MesQuestion("Изменился DOM страницы, и элемента " + this.description + " больше нет в кеше. Подождем 5 сек и попробуем найти его ещё разок");
BitrixFramework.Wait(5);
try
{
option.Click();
}
catch
{
Log.MesError("Не найден объект \"" + this.description + "\" по пути \"" + this.by.ToString() + "\"");
throw;
}
}
}
Log.MesNormal(String.Format("'{0}' -> Выбрано значение '{1}'", description, text));
//проверяем страницу на наличие ошибок
BitrixFramework.CheckJSErrors();
GM.CheckContentOnErrors();
return;
}
allOptionsThatHaveText = selectElement.Options.Where(se => se.Text.Contains(text));
if (allOptionsThatHaveText.Any())
{
foreach (var option in allOptionsThatHaveText)
{
try
{
option.Click();
}
catch (StaleElementReferenceException)
{
Log.MesQuestion("Изменился DOM страницы, и элемента " + this.description + " больше нет в кеше. Подождем 5 сек и попробуем найти его ещё разок");
BitrixFramework.Wait(5);
try
{
option.Click();
}
catch
{
Log.MesError("Не найден объект \"" + this.description + "\" по пути \"" + this.by.ToString() + "\"");
throw;
}
}
}
Log.MesNormal(String.Format("'{0}' -> Выбрано значение '{1}'", description, text));
//проверяем страницу на наличие ошибок
BitrixFramework.CheckJSErrors();
GM.CheckContentOnErrors();
return;
}
throw new NoSuchElementException(string.Format("Нет элементов с вхождением: {0}", text));
}
catch { }
}