有没有办法使用Selenium和Python绑定执行鼠标悬停(悬停在元素上)?

时间:2011-11-24 05:23:08

标签: python selenium selenium-webdriver python-bindings

阅读here,显然曾经是RenderedWebElement类,hover方法。但是,它专门用于Java(我搜索过的Python绑定文档无济于事),因此已被弃用于Java。

使用action_chains也无法使用WebElement对象执行hover

有关如何为Python执行此操作的任何想法?我一直here但它使用RenderedWebElement,因此没有太多帮助。

我正在使用:Python 2.7,Windows Vista,Selenium 2,Python Bindings

编辑: mouse_over对象有一个方法selenium.selenium.selenium,但是如果没有独立服务器运行,我就无法想办法创建实例。< / p>

2 个答案:

答案 0 :(得分:70)

要进行悬停,您需要使用move_to_element方法。

这是一个例子

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

firefox = webdriver.Firefox()
firefox.get('http://foo.bar')
element_to_hover_over = firefox.find_element_by_id("baz")

hover = ActionChains(firefox).move_to_element(element_to_hover_over)
hover.perform()

答案 1 :(得分:2)

@AutomatedTester为社区提供了一个很好的解决方案!

下面是我的用法。

我使用信号来正确退出phantomJS,因为它有时在当前进程中挂起。

我更喜欢使用find_element_by_xpath,因为可以在chrome中轻松找到xpath。

方法如下: 右键单击->检查->右键单击->复制-> CopyXpath

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

browser = webdriver.PhantomJS()
browser.implicitly_wait(3)

def hover(browser, xpath):
    element_to_hover_over = browser.find_element_by_xpath(xpath)
    hover = ActionChains(browser).move_to_element(element_to_hover_over)
    hover.perform()



browser.service.process.send_signal(signal.SIGTERM)  # kill the specific phantomjs child proc
browser.quit()