无法使用Selenium输入文本

2024-04-29 07:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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')

如果我运行脚本,上面的错误就会出现。但是,如果我在控制台中逐行键入。那么就没有错误了

我该怎么办

谢谢


Tags: browser脚本url密码messageselenium错误not
3条回答

要使用Selenium密码字段内发送字符序列,必须为element_to_be_clickable()导出WebDriverWait,并且可以使用以下任一解决方案:

  • 使用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

每当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\u 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);

也许你应该试着“一步一步”地做。首先选择元素,清除其值,然后执行send\u键

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

希望有帮助

相关问题 更多 >