Здравствуйте. Необходимо обработать выпадающие списки. Они реализованы через select, но элементы списка сделаны через ul/li, при чем элементы ul/li уже есть в DOM, только они невидимые.
Я так понимаю, что при выпадении элементов списка есть какая-то анимация или что-то подобное и периодически выскакивает исключение ElementNotVisibleExeption, но не для всех списков. Если прогонять в дебагере или со слипами, то все работает прекрасно. Вот хотел узнать что тут такого может быть в списках, можно ли их обработать обычной ждалкой wait как для всех элементов или для них нужно что-то свое наваять с задержками?
Вот моя стандратная ждалка появления элемента:
public void WaitForVisibilityOfElement(By locator)
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(GLOBAL_WAIT));
wait.Until(ExpectedConditions.ElementIsVisible(locator));
}
Вот такие выпадающие списки: Monosnap
Вот так это дело представлено в html: Monosnap
Списки 1 и 2 отрабатывают, видимо из-за малого количества элементов, а 3 падает все время.
Метод выглядит примерно так:
helper.wait.WaitForVisibilityOfElement(precedentTypeComboBox);
helper.element.Click(precedentTypeComboBox);
helper.wait.WaitForVisibilityOfElement(comboBoxItems);
precItems = helper.element.FindElements(liItem);
precItems[0].Click();
helper.wait.WaitForVisibilityOfElement(precedentFormatComboBox);
helper.element.Click(precedentFormatComboBox);
helper.wait.WaitForVisibilityOfElement(comboBoxItems);
precItems = helper.element.FindElements(liItem);
precItems[1].Click();
helper.wait.WaitForVisibilityOfElement(precedentCategoryComboBox);
helper.element.Click(precedentCategoryComboBox);
helper.wait.WaitForVisibilityOfElement(comboBoxItems);
precItems = helper.element.FindElements(liItem);
precItems[2].Click();