无法使用 Selenium 输入文本
Cannot input text with Selenium
我想用 Selenium 在盒子里输入密码,但它 returns 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')
如果我运行这个脚本,就会出现上面的错误。但是,如果我在控制台中逐行键入。然后就没有报错了。
我该怎么办?
谢谢。
也许你应该尝试一下 "by step"。首先 select 元素,清除它的值然后做 send_key 东西...
element = browser.find_element_by_id('cnotp')
element.clear()
element.send_keys('123456')
希望对您有所帮助!
每当有 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);
要使用 在 密码 字段中发送 字符序列 ,您必须引入 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
浏览器快照:
我想用 Selenium 在盒子里输入密码,但它 returns 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')
如果我运行这个脚本,就会出现上面的错误。但是,如果我在控制台中逐行键入。然后就没有报错了。
我该怎么办?
谢谢。
也许你应该尝试一下 "by step"。首先 select 元素,清除它的值然后做 send_key 东西...
element = browser.find_element_by_id('cnotp')
element.clear()
element.send_keys('123456')
希望对您有所帮助!
每当有 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);
要使用 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
浏览器快照: