簡體   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