ElementNotInteractableException: Message: element not interactable error while sending text to Email field on Quora using Selenium with Python

青春壹個敷衍的年華 提交于 2019-11-26 22:11:11

问题


Here is my code:

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)

Here is the error message:

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

I think there is another thread with a similar issue. Either the solutions in that thread didn't work for me or I don't know how to implement the solutions.


回答1:


To send a character sequence to the Email field within Login section of Quora you need to induce WebDriverWait for the element to be clickable and you can use the following solution:

  • Code Block:

    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")
    
  • Browser Snapshot:




回答2:


As said in comment, the locator used returning two elements and required element is second one. driver trying to interact with first element, so exception is throwing.

good see in console, the locator returning required one or not.

> $$("[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)

go for another locator, if not able to figure it out another locator, then comment, will help you.




回答3:


find_element_by_name("email")

is present multiple times in DOM. So that wouldn't work.

You can try with this css selector :

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

Code :

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

username.send_keys("user@gmail.com")



回答4:


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)

Here You can find Why ElementNotInteractableException occurs.




回答5:


If you are using the Select aproach like:

from selenium.webdriver.support.select import Select

try this

Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '''//*[@id="ReportViewer1_ctl04_ctl07_ddValue"]''')))).select_by_visible_text(str(x))



来源:https://stackoverflow.com/questions/55945497/elementnotinteractableexception-message-element-not-interactable-error-while-s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!