繁体   English   中英

Python:Selenium - 消息:元素不可交互

[英]Python: Selenium - Message: element not interactable

新手想弄明白。 我四处寻找答案,但没有找到。
在尝试与网页交互时,我从 Python 收到此消息:

元素不可交互

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://www.annemcgilvray.com")

search = driver.find_element_by_name("q")

search.send_keys("test")

我试过等待和隐式等待。 我不认为它在 iframe 中,尽管页面上有 iframe。

任何帮助,将不胜感激!

当我尝试你的代码时,问题是网站没有调整到我的浏览器 window 的大小,搜索字段不在视野范围内,因此无法与之交互,尽管 selenium 可以找到它。

我尝试使用execute_script其滚动到视图中,然后 send_keys 起作用了。

from selenium import webdriver

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://www.annemcgilvray.com")

search = wait.until(EC.visibility_of_element_located((By.NAME, "q")))

driver.execute_script(f"window.scrollBy({search.location['x']},0)")

search.send_keys("test")

您需要添加等待/延迟以让元素在访问之前完全加载。
最好的方法是使用预期条件实现的显式等待,如下所示:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
wait = WebDriverWait(driver, 20)

driver.get("https://www.annemcgilvray.com")

search = wait.until(EC.visibility_of_element_located((By.NAME, "q")))

search.send_keys("test")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM