Перейти к содержимому

Фотография

webdriver + python. click не работает


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 Choson

Choson

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Игорь

Отправлено 01 ноября 2019 - 13:29

День добрый!

Метод click не всегда работает. пробовал через хром и фокс.

При авторизации на сайте click сработал. теперь хочу лог-аут сделать - сопротивляется.

При этом сделал запись и запустил через selenium IDE - все сработало.

out_button = driver.find_element_by_css_selector('.user-menu_dropdown')
out_button.click
time.sleep(5)

селектор совпадает с тем что в IDE записано, ошибок не дает.

что не так в этих двух строчках?

 

Да, 5 сек задержки для того, чтобы успеть увидеть нажатие на кнопку (должно развернуться меню)


  • 0

#2 Choson

Choson

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Игорь

Отправлено 05 ноября 2019 - 12:05

Попробовал на странице яндекса нажать на кнопку. тоже не нажимается.

 

from selenium import webdriver
import time
driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.fullscreen_window()
driver.get('https://yandex.ru/')
time.sleep(2)
str_str = driver.find_element_by_css_selector('input#text.input__control.input__input')
str_str.send_keys('python selenium')
button1 = driver.find_element_by_css_selector('div.search2__button')
button1.click
time.sleep(5)
driver.close()

 

текст в поисковой строке вводится, но поиск не запускается. Может кто подскажет!


  • 0

#3 Choson

Choson

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Игорь

Отправлено 05 ноября 2019 - 12:55

Проблему решил, но вопрос остался. Может кто подскажет?

Если комунить интересно:

в первом примере заменить out_button.click 

на webdriver.ActionChains(driver).move_to_element(out_button).click(out_button).perform()

На странице яндекса аналогично: button1.click

поменять на webdriver.ActionChains(driver).move_to_element(button1).click(button1).perform()


  • 0

#4 Roman666

Roman666

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Роман

Отправлено 05 ноября 2019 - 12:59

Может быть у вас некорректный селектор? Вот пример с кнопкой на яндексе http://prntscr.com/psqj9d


  • 0

#5 Choson

Choson

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Игорь

Отправлено 05 ноября 2019 - 13:25

Видимо я последний пост не ясно изложил. Проблему я решил и написал, каким образом.

Поиск селекторов не менял. на яндексе так и остался str_str = driver.find_element_by_css_selector('input#text.input__control.input__input')

поменял способ нажатия на элемент. если просто нажать на элемент - ничего; если сместить мышку на элемент, а потом нажать на него - все работает.\

Соответственно вопрос - почему?


  • 0

#6 Mafroz

Mafroz

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Засецкий Максим Юльевич

Отправлено 12 ноября 2019 - 14:24

Видимо я последний пост не ясно изложил. Проблему я решил и написал, каким образом.

Поиск селекторов не менял. на яндексе так и остался str_str = driver.find_element_by_css_selector('input#text.input__control.input__input')

поменял способ нажатия на элемент. если просто нажать на элемент - ничего; если сместить мышку на элемент, а потом нажать на него - все работает.\

Соответственно вопрос - почему?

Сразу что бросается в глаза, что метод click вызывается без (), возможно в этом проблема. Т.е.

out_button = driver.find_element_by_css_selector('.user-menu_dropdown')
out_button.click()
time.sleep(5)

  • 0

#7 Choson

Choson

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Игорь

Отправлено 13 ноября 2019 - 13:21

Точно! Спасибо!


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных