Драйвер Python Selenium Firefox. Сообщение: Ошибка типа: прямая не определена

#selenium #selenium-webdriver #selenium-firefoxdriver

#селен #селен-веб-драйвер #селен-firefoxdriver

Вопрос:

Моя программа работает в драйвере Chrome, но имеет проблемы с сбоями памяти, поэтому я пытаюсь в Firefox, который, как я читал, возможно, решит эту проблему. Я думал, что проблема может быть в firefox, но я могу воспроизвести это в repl и заставить его работать. Я прочитал несколько тем, кажется, есть несколько проблем, которые могут привести к этому 1. Элемента нет в окне просмотра 2. Элемент не был загружен.

Этот код предназначен для ввода пароля в систему Google для входа на рабочий веб-сайт.

 options = webdriver.FirefoxOptions() driver = webdriver.Firefox(options=options) driver.maximize_window() driver.get("https://accounts.google.com/signin/v2/identifier?continue=https://mail.google.com/mail/amp;service=mailamp;sacu=1amp;rip=1amp;flowName=GlifWebSignInamp;flowEntry=ServiceLogin") driver.implicitly_wait(10) element = driver.find_element(By.CLASS_NAME, 'google-sign-in-title').click() element = driver.find_element(By.ID, 'identifierId').send_keys('USERNAME') driver.find_element(By.CSS_SELECTOR, "#identifierNext gt; div gt; button gt; span").click() driver.implicitly_wait(20)   element = driver.find_element(By.CSS_SELECTOR, "input[type='password']") ActionChains(driver).move_to_element(element).click().perform()  

также попробовал метод scrollintoview с помощью executable_scripts:

 driver.execute_script("arguments[0].scrollIntoView();", element) element.click()  

Это молча терпит неудачу.

В качестве примечания, суть не в том, чтобы щелкнуть этот элемент, а в том, чтобы отправить ключи элементу для ввода моего пароля. если я попытаюсь:

 element.send_keys(password())  

Я получаю сообщение об ошибке: Элемент недоступен с клавиатуры

 elements = driver.find_elements(By.CSS_SELECTOR, "input[type='password']") print(len(elements))  elements = driver.find_elements(By.CSS_SELECTOR, "input[name='password']") print(len(elements))  try:   element = driver.find_element(By.CSS_SELECTOR,"input[name='password']").click()  except:   element = driver.find_element(By.CSS_SELECTOR, "input[type='password']").click()  

Выход:

1
1
селен.общие.исключения.Исключение ElementNotInteractableException: Сообщение: Элемент не удалось прокрутить в поле зрения
Во время обработки вышеуказанного исключения, произошло другое исключение:
selenium.common.исключения.Исключение ElementNotInteractableException: Сообщение: Элемент не удалось прокрутить в поле зрения

 element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='password']"))) element = driver.find_element(By.CSS_SELECTOR, "input[name='password']") ActionChains(driver).move_to_element(element).perform()   

та же ошибка -gt; эссе: ошибка типа: прямая не определена

Комментарии:

1. Я довольно удивлен, что это работает в Chrome… google использовал для предотвращения входа ботов в систему. Прямая неопределенная ошибка звучит так, как будто она исходит со стороны клиента… при попытке прокрутки. Появляется ли эта ошибка без прокрутки? (Кстати, свиток не нужен… Селен автоматически прокручивает элемент в поле зрения.)

2. «Сообщение: Элемент lt;класс ввода=»F29zPe» имя=»Скрытый пароль» тип=»пароль»gt; не удалось прокрутить в поле зрения». когда я попробую это сделать. Я попробую использовать XPATH. Получено: «Сообщение: Элемент lt;класс ввода=»whsOnd zHQkBf» имя=»пароль» тип=»пароль»gt; не удалось прокрутить в поле зрения»

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