2013-07-31 288 views
4

我正在爲我的項目使用Selenium Webdriver。我已經將代碼自動化到鼠標懸停在圖像上,這已成功完成。但是,有些如何無法通過此代碼將超鏈接拖放到超鏈接上。如何在超鏈接上進行鼠標懸停 - Webdriver

我使用的代碼是

Actions build1 = new Actions(driver); build1.moveToElement(WebElement).build().perform();

我使用

Locatable hoverItem = (Locatable) driver.findElement(); Mouse mouse = ((HasInputDevices) driver).getMouse(); mouse.mouseMove(hoverItem.getCoordinates())

也試過,但它也不能正常工作了。請幫我在這

回答

0

試試這個:

Actions action = new Actions(webdriver); 
WebElement we = webdriver.findElement(By.xpath("x_p_a_t_h")); 
action.moveToElement(we).build().perform(); 
+1

這與他最初的'Actions build1 = new Actions(driver)有什麼不同? build1.moveToElement(WebElement).build()執行();'? –

0

我用的DefaultSelenium類的public void mouseOver(String)方法。代碼的本質是如下:

protected void hoverAction() { 
    WebDriverBackedSelenium webDriver = some_elaborate_method_to_get_webdriver; 
    webDriver.mouseOver("x_p_a_t_h"); 
} 

您可能還需要尋找到把某種等待時間上的懸停,以確保該元素你失敗之前被渲染(如飛出菜單,通常推出從鏈接不會立即出現)。

+0

感謝您的回覆。但是這也沒有解決。 –

+0

@SudharsanSrinivasan也許你需要確保元素被加載。在我的實現中(我們已經完成了WebDriver的一個精心設計的擴展來獲得Singleton實例),只有在元素被加載後,我們才使用hoverAction。在使用FirefoxDriver時,我還沒有在這方面進行任何測試失敗.. – radimpe

+0

是的元素被加載。我可以點擊超鏈接。但不能將鼠標懸停在它上面。 –

0

所有其他海報已經張貼所有我能想出的建議,卻沒有一個似乎工作。當我到達這一點時,我退後一步,問爲什麼我需要將鼠標懸停在超鏈接上。它只是檢查替代文字?如果是這樣的話,我會使用element.getAttribute(「alt」),並驗證文本是我所期望的。我不需要測試瀏覽器懸停功能。我唯一能提出的其他建議是在運行測試時確保您的鼠標光標不在瀏覽器窗口中。這也可以拋棄鼠標。

+0

感謝您的回覆。當鼠標懸停在它上面時,我需要獲取超鏈接的顏色。關於第二點,是的。運行測試時光標不在瀏覽器窗口上。 –

1

我有同樣的問題,並通過將光標移動1px解決它。最後一行觸發懸停事件。

Actions action = new Actions(driver); 
action.moveToElement(element).build().perform(); 
action.moveByOffset(1, 1).build().perform();