ElementNotInteractableException: Сообщение: ошибка элемента не взаимодействовала при отправке текста в поле электронной почты в Quora с использованием Selenium с Python - PullRequest
0 голосов
/ 02 мая 2019

Вот мой код:

from selenium import webdriver

user = "someemail@email.com"

browser = webdriver.Chrome("/path/to/browser/")

browser.get("https://www.quora.com/")

username = browser.find_element_by_name("email")

browser.implicitly_wait(10)

username.send_keys(user)

Вот сообщение об ошибке:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

Я думаю, что есть другая тема с похожей проблемой.Либо решения в этой теме не работают для меня, либо я не знаю, как реализовать решения.

Ответы [ 4 ]

1 голос
/ 02 мая 2019

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

  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument("--disable-extensions")
    # options.add_argument('disable-infobars')
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("https://www.quora.com/")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='title login_title' and text()='Login']//following::div[1]//input[@class='text header_login_text_box ignore_interaction']"))).send_keys("someemail@email.com")
    
  • Снимок браузера:

quora_email

1 голос
/ 02 мая 2019

Как сказано в комментарии, локатор использовал возврат двух элементов, а обязательный элемент - второй. Драйвер пытается взаимодействовать с первым элементом, поэтому генерируется исключение.

хорошо видно в консоли, локатор возвращает требуемый или нет.

> $$("[name='email']") (2) [input#__w2_wD9e9Qgz12_email.text, input#__w2_wD9e9Qgz18_email.text.header_login_text_box.ignore_interaction]
> 0: input#__w2_wD9e9Qgz12_email.text 1:
> input#__w2_wD9e9Qgz18_email.text.header_login_text_box.ignore_interaction
> length: 2
> __proto__: Array(0)

перейдите к другому локатору, если не сможете разобраться с другим локатором, тогда комментируйте, вам поможет.

1 голос
/ 02 мая 2019
find_element_by_name("email")

присутствует несколько раз в DOM.Так что это не сработает.

Вы можете попробовать этот селектор css :

input[class*='header_login_text_box'][name='email']  

Код:

username = browser.find_element_by_css_selector("input[class*='header_login_text_box'][name='email']")

username.send_keys("user@gmail.com")
1 голос
/ 02 мая 2019
from selenium import webdriver

user = "someemail@email.com"

browser = webdriver.Chrome("/path/to/browser/")

browser.get("https://www.quora.com/")

username = browser.find_element_by_xpath("//input[@class='text header_login_text_box ignore_interaction' and @type='text']")

browser.implicitly_wait(10)

username.send_keys(user)

Здесь Вы можете найти причину возникновения ElementNotInteractableException .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...