не может правильно выполнить click () - PullRequest
0 голосов
/ 04 октября 2019

я использую python 3.7.4, последний селен и geckodriver и Firefox версию 69.0.1.

я пытаюсь просто использовать click () на кнопке «Я чувствую себя счастливчиком» на главной странице Google, но яполучить ошибку selenium.common.exceptions.ElementNotInteractableException: Message: Element <option> could not be scrolled into view.

я пытался использовать msg_box.location_once_scrolled_into_view и get_element_by_class / id / name безрезультатно. это код:

from selenium import webdriver
import time

url = 'https://www.google.com'
driver = webdriver.Firefox()
driver.get(url)
time.sleep(4)
msg_box = driver.find_element_by_class_name('RNmpXc')
msg_box.location_once_scrolled_into_view
time.sleep(1)
msg_box.click()

что может вызвать ошибку?

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Индуцировать WebDriverWait и presence_of_element_located ()

Индуцировать javascript executor. Однако нажатие веб-драйвера на кнопку не работает.

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

url = 'https://www.google.com'
driver = webdriver.Firefox()
driver.get(url)
element=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CLASS_NAME,'RNmpXc')))
driver.execute_script("arguments[0].click();", element)
0 голосов
/ 04 октября 2019

Сообщение

selenium.common.exceptions.ElementNotInteractableException: Сообщение: Элемент не может быть прокручен в представлении.

означает, что в данный момент невозможно выбрать,Ваша программа пытается взаимодействовать с ней, но ее нельзя прокрутить. Это может быть, например, то, что программа пытается найти элемент, но затем он (пример) «исчезает» (например, всплывающее окно или появляется новая кнопка), и, следовательно, его нельзя прокрутить в поле зрения, и, следовательно, он не активен.

Вы можете добавить условие ожидания (когда появляется всплывающее окно), оно ждет в течение нескольких секунд после исчезновения всплывающего окна, щелкая элемент.

msgBox02 = WebDriverWait (драйвер, 10) .until (EC.element_to_be_clickable ((By.ID, "EXAMPLE"))) msgBox02.click ()

ПРИМЕЧАНИЕ: Я добавил пример так же, как RNmpXc

...