Невозможно ввести текст с помощью Selenium - PullRequest
1 голос
/ 05 июля 2019

Я хочу ввести пароль в ящик с Selenium, но он возвращает selenium.common.exceptions.WebDriverException: Message: element not interactable

Мой скрипт на python:

from selenium import webdriver
browser = webdriver.Chrome(r'c:\chromedriver.exe')
url = 'https://creis.fang.com/'
browser.get(url)
browser.find_element_by_id('cnotp').send_keys('123456')

Если я запустил скрипт, появится указанная выше ошибка.Однако, если я набираю построчно в консоли.Тогда нет ошибки.

Что мне делать?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 05 июля 2019

Всегда сообщайте, когда происходит изменение URL.

from selenium import webdriver

driver = webdriver.Chrome()  # Change
driver.get('https://creis.fang.com/')

element = WebDriverWait(driver, 60).until(
    EC.presence_of_element_located((By.ID, "cnotp"))
)

element.clear()
element.send_keys("123456")

Если это не работает, используйте js_executor

element = WebDriverWait(driver, 60).until(
    EC.presence_of_element_located((By.ID, "cnotp"))
)

driver.execute_script("document.getElementById('cnotp').click()")
driver.execute_script("arguments[0].setAttribute('value', '123456')", element);
0 голосов
/ 05 июля 2019

Чтобы отправить последовательность символов в поле password с использованием Selenium , вам нужно вызвать WebDriverWait для element_to_be_clickable() и вы можно использовать одно из следующих решений:

  • Использование CSS_SELECTOR:

    driver.get("https://creis.fang.com/")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.loginipt.fl#cnotp"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.loginipt.fl#cnpassword"))).send_keys("Chan")
    
  • Использование XPATH:

    driver.get("https://creis.fang.com/")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='loginipt fl' and @id='cnotp']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='loginipt fl' and @id='cnpassword']"))).send_keys("Chan")
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

password

0 голосов
/ 05 июля 2019

Может быть, вам стоит попробовать сделать это «шаг за шагом». Сначала выберите элемент, очистите его значение, затем выполните команду send_key ...

element = browser.find_element_by_id('cnotp')
element.clear()
element.send_keys('123456')

Надеюсь, это поможет!

...