如何模拟光标python selenium 的悬停

how to simulate the hover of cursor python selenium

我想点击网站上的按钮,但是你把光标放在正确的位置后才会出现这个按钮,否则你看不到这个按钮。我试图忽略它并通过 xpath 查找元素来正常单击。但这并没有成功,有错误:

selenium.common.exceptions.ElementNotInteractableException:消息:元素不 可交互:元素大小为零

如何处理?

要将鼠标悬停在元素上,您可以使用这样的方法:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

chrome= webdriver.Chrome()
chrome.get('http://foo.bar')
element = chrome.find_element_by_css_selector("the_element_u_want")

hover = ActionChains(chrome).move_to_element(element)
hover.perform()

如果元素需要时间出现,请使用 selenium 的 wait or time.sleep()

查找有关 ActionChains 的更多信息here

这是我找到的一些代码 here

通常,当元素未完全加载时抛出 ElementNotInteractableException。这是一个可能的解决方案:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

driver = webdriver.Chrome('C:\Users\dell\Libs\chromedriver.exe')

driver.get("http://url")
driver.maximize_window()

# wait for element to appear, then hover it
wait = WebDriverWait(driver, 10)
men_menu = wait.until(ec.visibility_of_element_located((By.XPATH, "//a[@data-tracking-id='men']")))
ActionChains(driver).move_to_element(men_menu).perform()

这个方法对我很有效。

def hoverXPATH(xpath):
   item = WebDriverWait(driver, 10)\
   .until(EC.visibility_of_element_located((By.XPATH, xpath)))
   ActionChains(driver).move_to_element(item).perform()