Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2017 14:58:57

DenAon
От: Ярославль
Зарегистрирован: 2017-11-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "нажать кнопку"?

Изучаю Python 3 и Selenium Webdriver.
Есть страница с Яндека, картинки https://yandex.ru/images/
Нужно нажать кнопку для перехода на картинку предыдущего дня

 try:
elem2 = driver.find_element_by_class_name("b-501px-slider__arrow b-501px-slider__arrow_dir_prev")
except NoSuchElementException:
qwe = input("Не нашлось кнопки Назад. Нажмите Enter для выхода")
else:
print("Переход по кнопке Назад")
Происходит исключение.
Как я понимаю проблемы могут быть следующие:
1. кнопка не видимая, нужно навести на нее мышку и нажать.
2. здесь срабатывает не нарисованная кнопка, а другой элемент, которому и надо передавать событие нажатия.

Прошу задать ускорение в нужную сторону.



Многознание уму не научает!!!

Офлайн

#2 Ноя. 20, 2017 19:38:19

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "нажать кнопку"?

DenAon

 elem2 = driver.find_element_by_xpath("/html/body/div[6]/div[1]/div/div[1]/div[3]/div[4]/div[1]/div")
driver.execute_script("$(arguments[0]).click();", elem2)
print("Переход по кнопке Назад")

Отредактировано hvppydvddy (Ноя. 20, 2017 19:46:30)

Офлайн

#3 Ноя. 20, 2017 19:57:42

DenAon
От: Ярославль
Зарегистрирован: 2017-11-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "нажать кнопку"?

hvppydvddy
DenAon
Благодарю за ответ. Я уже успел кой чего приколхозить, основная проблема была в том что я смотрел функцию хрома “посмотреть код”. Он показывал вот такой код
<div class=“b-501px-slider__arrow b-501px-slider__arrow_dir_prev” tabindex=“0” aria-label=“Картинка предыдущего дня” style=“height: 302px; margin-top: -151px;”><div class=“b-501px-slider__arrow-icon”></div></div>
Но когда подсвечивается элемент при выделении кода, на экране он уже обозван как
div.b-501px-slider__arrow.b-501px-slider__arrow_dir_prev
Вместо пробела точка.
второй прикл, что эта кнопка при первой загрузке подсвечена и имеет вот такой код
<div class=“b-501px-slider__arrow b-501px-slider__arrow_dir_prev b-501px-slider__arrow_blinking_yes” tabindex=“0” aria-label=“Картинка предыдущего дня” style=“height: 302px; margin-top: -151px;”><div class=“b-501px-slider__arrow-icon”></div></div>
Он отличается от того что я искал и нажимал.
В итоге пришлось сделать задержку и после нее искать элемент и нажимать.
            time.sleep(1)
try:
elem2 = driver.find_element_by_class_name("b-501px-slider__arrow.b-501px-slider__arrow_dir_prev")
except NoSuchElementException:
qwe = input("Не нашлось кнопки Назад. Нажмите Enter для выхода")
else:
print("Переход по кнопке Назад")
Click = ActionChains(self.driver).click(elem2)
Click.perform()

Еще подскажите каким инструментом можно найти правильный XPATH для элемента. А то из просмотра кода что то он совсем не видится. Или я не там смотрю.



Многознание уму не научает!!!

Офлайн

#4 Ноя. 20, 2017 20:02:58

hvppydvddy
Зарегистрирован: 2015-05-26
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "нажать кнопку"?

DenAon
ще подскажите каким инструментом можно найти правильный XPATH для элемента
Фаерфокс с этим справляется на ура) в старых версиях (если не ошибаюсь ниже 50) это аддон Fire Bug + FirePath. А на последней версии вообще сказка без всяких аддонов, ПКМ по элементу -> Исследовать элемент, снизу на выделенной строчке жмем ПКМ -> копировать -> Xpath

Отредактировано hvppydvddy (Ноя. 20, 2017 20:03:37)

Офлайн

#5 Ноя. 20, 2017 20:14:09

DenAon
От: Ярославль
Зарегистрирован: 2017-11-17
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "нажать кнопку"?

hvppydvddy
Круто, буду знать! Полезный совет.



Многознание уму не научает!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version