2011-09-01 133 views
6

任何人都知道如何將鼠標懸停在Selenium Ruby Webdriver的元素上?如何在Selenium Ruby中懸停(鼠標懸停)元素?

我的代碼是這樣的:

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

我使用硒寶石的webdriver與Firefox在Linux 32位。

回答

3

原來答案是:

driver.move_to(el).perform 

我忘了.perform

+0

檢查@ Seanny123和我的評論有關於爲什麼這個現在可能工作。 –

3

這個工作對我來說:

driver.mouse.move_to el 
+0

檢查@ Seanny123和我的評論下面關於爲什麼現在可以工作的答案。 –

5

我用driver.action.move_to(el).perform從其他的答案不同,非常輕微,所以我想我會包括它們的完整性的緣故。

+2

目前selenium已經關閉了'move_to'功能,所以你現在需要使用'.action'來訪問鼠標功能。 –

+0

@DanSabin你想提出一個解釋澄清這個問題嗎?我會完全接受它。 – Seanny123

1

您需要使用Selenium's Action Builder才能訪問更復雜的動作,如懸停(這正是seanny123的答案演示的內容)。

另外,如果您正在使用懸停,則在進行下一個操作(例如,使用明確的等待)之前,您需要動態等待它顯示。

我整理了一個關於如何做到這一點的例子 - 你可以看到完整的寫法here

1

徘徊的元素:

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

要在特定位置懸停的元素:

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