Почему прокрутка вызывает исключение Selenium Webdriver? - PullRequest
0 голосов
/ 23 декабря 2018

Я пишу бота, который нажимает кнопки запроса.

Я прокручиваю до кнопки запроса, находя ее по идентификатору, и нажимаю ее.

Я использую Safari и Python 3.

#pop_up_request_buttons_id_list - all of the ids

button = driver.find_element_by_id(pop_up_request_buttons_id_list[2])
driver.execute_script("return arguments[0].scrollIntoView();", button)

print(pop_up_request_buttons_id_list[2])
button.click()

по некоторым причинам это вызывает исключение веб-драйвера Selenium без сообщения.

Примечания:

Прокрутка до родительского класса кнопки не вызывает исключения, и кнопка нажимается.Также я хотел бы отметить, что если я прокручиваю до родительского класса, видна только одна кнопка, но когда я прокручиваю по идентификатору, 2 кнопки видны на экране после прокрутки.

Почему возникает исключение и почему кнопка не нажимается?

1 Ответ

0 голосов
/ 27 декабря 2018

Чтобы избавиться от Исключение Selenium Webdriver без сообщения , вам нужно вызвать WebDriverWait для видимости элемента, расположенного , и вы можете использовать следующее решение:

button = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "pop_up_request_buttons_id_list[2]")))
driver.execute_script("arguments[0].scrollIntoView();", button)

Примечание : необходимо добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
...