消息:元素不可交互Python发送键



我正试图用Selenium将密钥发送到Youtube搜索框,我尝试过搜索ID和Xpath,但总是收到错误。这些错误包括";消息:元素不可交互";,我哪里错了?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
PATH = "C:Program Files (x86)chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://youtube.com")
searchbox = driver.find_element("xpath", '//*[@id="search-input"]')
searchbox.send_keys('Jack West')

有两个问题:

第一个:

您的xpath提供<div>,但无法将密钥发送到<div>

你必须得到<div>内的<input>

'//*[@id="search-input"]//input'

稍后它需要点击按钮开始搜索。

第二:

当我运行代码时,浏览器会显示弹出窗口,并要求接受cookie等。这个弹出窗口会阻止访问搜索字段。它需要添加接受它的代码。


from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
#from webdriver_manager.firefox import GeckoDriverManager
import time
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
#driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()))
driver.get("https://youtube.com")
time.sleep(5)
print('cookies')
cookies = driver.find_elements(By.XPATH, '//div[contains(@class,"eom-button-row")]//a')
cookies[1].click()
time.sleep(5)
print('searchbox')
searchbox = driver.find_element(By.XPATH, '//*[@id="search-input"]//input')
searchbox.send_keys('Jack West')
print('searchbox button')
searchbox_button = driver.find_element(By.XPATH, '//button[@id="search-icon-legacy"]')
searchbox_button.click()

但使用url 可能更简单

https://www.youtube.com/results?search_query=Jack+West

并且它不需要点击任何键或按钮。


YouTube为开发人员/程序员提供了API,这应该是首选方法。

最新更新