Ваш код отлично работает с моей стороны, но здесь, где я считаю, может возникнуть проблема.
В вашем wait.until()
вы используете presence_of_element_located
.
Как вы заявили, он работал раньше и больше не работает. Я предполагаю, что элемент найден, но не был полностью загружен, после чего вы вызвали прокрутку сверху, которая не заставила элемент появиться.
Другой метод ЕС - visibility_of_element_located
. Эта логика будет использовать ту же логику, что и присутствие ..., но вернет элемент только тогда, когда он станет видимым, используя
is_disaplayed()
Измените код, чтобы использовать вместо этого метод:
driver.get('https://www.91mobiles.com/phonefinder.php')
driver.execute_script('window.scrollTo({ top: document.body.scrollHeight || document.documentElement.scrollHeight, behavior: "smooth" });')
wait = WebDriverWait(driver, 30)
# timeout is 30 seconds, execution will be delayed until the 'NEXT' button found
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#finder_pagination .listing-btns4')))
# after that, scroll back to top
driver.execute_script('window.scrollTo({ top: 0, behavior: "smooth" });')
Ваш css_selector работал, но, как вы можете видеть, я изменил его на более простой и читаемый.