wait.until(ec.number_of_windows_to_be(3)) # 2,1 etc.
Я сделал как вы написали. Но буквально на 5 шаге, где мне надо кликнуть по картинке, мой тест падает. Страница с картинкой после логина просто не успевает загрузиться.
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div/*/img"}
У вас там ajax случаем нет? Ну и увас слишком много вейтов. Выберите что-то одно, что дольше всех грузится. После него и начинайте искать элементы. С каким эксепшеном падает тест?
Это extjs. Сначала появляется форма входа - я ввожу логин, пароль и т.д. Затем грузится страница после логина и там мне в главном меню надо перейти на другую страницу. Главное меню это раскрывающийся список. Я его открываю при помощи нажатия на “стрелочку вниз” - по xpath это обычная картинка (By.XPATH, “//div/*/img”). Если я ставлю sleep и затем кликаю по картинке, то все норм и все открывается. А в предыдущей реализации он мне пишет
Message: unknown error: Element <img src="extjs3.3/resources/images/default/s.gif"> is not clickable at point (319, 20)
Почему получается, что при sleep я жду когда страница откроется после логина и он нормально кликает, а при waits он мне пишет, что элемент не кликабельный.
Я же говорю, либо на глаз, либо откройте инструменты разработчика и смотрите на вкладке Network какие запросы куда идут и в какой последовательности. Еще лучше спросить у разработчиков, они смогут подсказать более точно.
А почему никто не пользует PyAutoGUI · PyPI ?
Крутая библа же, проста как 3 копейки. Эмуляция набора с клавиатуры и действия мыши. Реализовываю работу с всплывающими окнами