如何模拟光标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()
我想点击网站上的按钮,但是你把光标放在正确的位置后才会出现这个按钮,否则你看不到这个按钮。我试图忽略它并通过 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()