我想在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')
如果运行脚本,则会出现上述错误。但是,如果我在控制台中逐行键入。那就没有错误。
我该怎么办?
谢谢。
答案 0 :(得分:0)
也许您应该尝试“逐步”进行操作。首先选择元素,清除其值,然后执行send_key的操作...
element = browser.find_element_by_id('cnotp')
element.clear()
element.send_keys('123456')
希望有帮助!
答案 1 :(得分:0)
无论何时更改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);
答案 2 :(得分:-1)
要使用Selenium在密码字段内发送字符序列,您必须为{{1}引入
使用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")
浏览器快照: