如何在Selenium Ruby中hover(mouseover)一个元素?

任何人都知道如何将鼠标hover在Selenium Ruby Webdriver中的元素上?

我的代码是这样的:

el = driver.find_element(:css => "#foo") driver.move_to el # How do I trigger a mouseover event on this element? 

我在Linux 32位中使用selenium-webdriver gem和Firefox。

我使用了driver.action.move_to(el).perform ,它与其他答案略有不同,所以我想我会把它包括在内为了完整性。

这对我有用:

 driver.mouse.move_to el 

原来答案是:

 driver.move_to(el).perform 

我忘记了.perform

您需要使用Selenium的Action Builder来访问更复杂的操作,例如hover(这是seanny123的答案所展示的)。

此外,如果您正在使用hover,则在进行下一个操作(例如,使用显式等待)之前,您需要动态等待它显示。

我举了一个如何做到这一点的例子 – 你可以在这里看到完整的文章。

hover元素:

 driver.action.move_to(element).perform # eg driver.action.move_to(driver.find_element(css: 'a')).perform 

要将元素hover在特定位置:

 driver.action.move_to(element, mouse_x, mouse_y).perform # eg driver.action.move_to(driver.find_element(css: 'a'), 100, 100).perform