Продолжаю дальше.
Похоже что я некорректно использую ожидание подгрузки элементов.
Выбор любого действия (авторизация, клик по ссылкам, итд) происходит без перезагрузки страницы.
Инициализацию пейджа я выполняю в базовом классе, от которого остальные пейджи наследуются:public BasePage(WebDriver driver) throws InterruptedException { ElementLocatorFactory page = new AjaxElementLocatorFactory(driver, configTest.getWaitTime()); PageFactory.initElements(page, this); this.driver = driver; }Но это не спасает.
После успешной авторизации я попадаю на страничку, на которой пытаюсь кликнуть по span элементу, но клик не выполняется. Визуально видно что тест выбрал нужный спан (он подсветился), однако клик не произошел. Опять таки, если я явно задам sleep хотя бы в 500 мс, то всё отработает нормально.
Никак не могу понять почему страница не может дождаться полной загрузки всех контролов. Каждый раз выставлять слип совсем не хочется.
Господа, очень прошу о помощи, ибо не понятно в какую сторону копать.
Спасибо большое!
Привет! Я сама тоже начинающая, но у меня честно говоря ошибок с таймаутом не возникало, то есть конкретного решения не предложу, но могу подсказать, что я бы проверила:
- сложилось впечатление, что ты не совсем верно работаешь с локаторами, если приложение на ангуляре, почему не использовать ng-model или прочие локаторы, по которым поиск элементов быстрее xpath?
- не совсем ясно: инициализируешь ожидание драйвера и потом используешь неявное ожидание для поиска элементов? не может быть путаницы в явнях и неявных ожиданиях? в первом случае ты выставляешь время инициализации экземпляра веб драйвера, а во втором явное ожидание для элементов? может это избыточно?
- если решил использовать явное ожидание, попробуй использовать ExpectedConditions.presenceOfElementLocated , а не visibilityOfElementLocated
- использовать sleep - по-моему вообще не выход
Спасибо за тему, в любом случае остаюсь следить.