Python Selenium .click() 在使用 ActionChains 后不工作

Python Selenium .click() not working after using ActionChains

我正在 Youtube 上进行搜索,然后按几个 TAB,然后通过 ActionChains 按几个 END...然后我想获取结果,如果我找到我想要的,我想要点击它。

driver.get('https://www.youtube.com')
time.sleep(4)
items = driver.find_element(By.XPATH, "//input[@id='search']")
rand = random.choice(query)
items.send_keys(rand)
items.send_keys(Keys.RETURN)
time.sleep(2)

action = ActionChains(driver)

for i in range(5):
    action.send_keys(Keys.TAB)
    action.perform()
    time.sleep(1)


for i in range(3):
    action.send_keys(Keys.END)
    action.perform()
    time.sleep(4)

items = driver.find_elements(By.XPATH, "//div[@id='primary']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")

for i in items:
    if ......... :
        i.click()

通常,使用后:driver.find_elements(By.XPATH....我可以做一个

for i in items:
    if ...... :
    i.click()

但是现在它不起作用了,因为我一直在使用 action = ActionChains(driver)

我收到此错误:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

我找到了答案,问题出在 youtube 而不是 selenium。 i.click() 有效,问题是我的 find_elements(By.XPATH, ... youtube 也有主页上的不可见元素,这些元素包含在结果页面中,这给了我不可见的项目.

一旦我将 XPATH 更改为:

//ytd-search[@class='style-scope ytd-page-manager']//div[@id='primary']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")

有效