我一直在嘗試使用Selenium WebDriver與Firefox 19測試我的網頁中的工具提示。
我基本上試圖使用鼠標操作將鼠標懸停在附帶工具提示的元素,以便測試工具提示是否顯示,並懸停在另一個元素上以測試工具提示是否隱藏。 第一個操作很好,但是當鼠標懸停在另一個元素上時,工具提示仍然可見。手動測試網頁時不會發生此問題。
有沒有其他人遇到過這個問題?我使用的是Ubuntu 12.04。Selenium WebDriver鼠標操作moveToElement不會在Firefox上引發鼠標事件Linux
回答
高級動作API似乎依賴於本機事件,默認情況下這些事件在Linux版本的Firefox中被禁用。因此,必須明確地在WebDriver實例中啓用它們。
FirefoxProfile profile = new FirefoxProfile();
//explicitly enable native events(this is mandatory on Linux system, since they
//are not enabled by default
profile.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(profile);
而且,在我來說,我需要升級,因爲懸停webdriver的2.31版本(moveToElement
)行動沒有正確的2.30甚至明確啓用本地事件工作。使用WebDriver 2.31版和Firefox上Firefox 17和19版對此進行了測試。 欲瞭解更多信息,你可以檢查此鏈接:
http://code.google.com/p/selenium/wiki/AdvancedUserInteractions#Native_events_versus_synthetic_events
我也遇到了Firefox 19上Selenium 2.30的這個問題。它在FF 18.2上正常工作。
您是否發現此問題的任何解決方法?我試圖在Mac上的Firefox上測試它。 – nids 2013-05-09 15:07:28
我有同樣的問題。 起初我用方法moveToElement()
沒有perform()
。 然後我加Firefox Profile
與setEnableNativeEvents
,但它仍然沒有爲我工作。 最後,我以這種方式(解決了這個問題,只需添加perform()
:
WebElement username = driver.findElement(By.id("username")); Actions actions = new Actions(driver); actions.moveToElement(username).perform(); WebElement tooltip = driver.findElement(By.id("tooltip")); tooltip.isDisplayed();
,它工作正常
這是一個簡單而方便的方法,用javascript調用,將發送一個鼠標移出()事件(我更喜歡用By來傳遞它們,但是你可以把它改成任何你喜歡的東西
我在Chrome中遇到了一個問題,那裏的工具提示一旦被點擊並且遮住了其他附近的點擊事件就會拒絕關閉,導致它們這種方法在那種情況下節省了一天的時間,希望它能幫助別人LSE!這樣
/**
* We need this to close help text after selenium clicks
* (otherwise they hang around and block other events)
*
* @param by
* @throws Exception
*/
public void javascript_mouseout(By by) throws Exception {
for (int i=0; i<10; i++) {
try {
JavascriptExecutor js = (JavascriptExecutor)driver;
WebElement element = driver.findElement(by);
js.executeScript("$(arguments[0]).mouseout();", element);
return;
} catch (StaleElementReferenceException e) {
// just catch and continue
} catch (NoSuchElementException e1) {
// just catch and continue
}
}
}
您可以將任何類型的點擊後稱之爲()事件:
By by_analysesButton = By.cssSelector("[data-section='Analyses']");
javascript_mouseout(by_analysesButton);
據透露,礦山試圖通過10倍以上。與嘗試/捕獲循環,因爲我們的應用程序有一個傾向Chrome針對過時的元素異常,因此如果您沒有這個問題,該方法可以大大減少。
- 1. 鼠標懸停不工作在Selenium Webdriver
- 2. 即使鼠標沒有移動,Selenium MoveToElement會導致onmousemove事件發生?
- 3. 鼠標點擊事件 - 在Firefox上的鼠標座標
- 4. 標籤不會觸發鼠標事件
- 5. Firefox的鼠標事件不起作用
- 6. 硒Webdriver鼠標
- 7. 當鼠標X = 0時,AS3鼠標事件不會觸發
- 8. moveToElement鼠標懸停功能在Selenium WebDriver中使用Java不穩定
- 9. Selenium Webdriver。 Internet Explorer 9中的鼠標操作不準確
- 10. JavaScript鼠標事件不會觸發
- 11. 多個鼠標事件不會觸發
- 12. 如何在Linux中讀取鼠標和鼠標按下事件?
- 13. 在Firefox中使用webdriver移動鼠標
- 14. selenium c#鼠標懸停操作功能
- 15. 在iPad上觸發jQuery鼠標事件
- 16. 不能在圖像鼠標上引發事件
- 17. JavaScript:鼠標滾輪事件在文本框上不會觸發
- 18. 使用Selenium WebDriver加速鼠標
- 19. 鼠標懸停和鼠標不斷觸發事件?
- 20. 鼠標事件
- 21. 在C(linux)中捕獲鼠標事件
- 22. JQuery:鼠標事件觸發
- 23. 未觸發鼠標事件
- 24. jQuery觸發鼠標事件
- 25. 在linux上模擬鼠標而不使用實際鼠標
- 26. 如何使用Firefox 19中的Selenium WebDriver進行鼠標懸停?
- 27. 即使鼠標被遮擋,WPF Grid也不會觸發鼠標事件
- 28. clearTimeout鼠標懸停事件不清除setoutout鼠標事件
- 29. 如何在任何鼠標按鈕事件中觸發操作?
- 30. 如何在鼠標輸入事件中觸發鼠標中鍵?
這正是我的問題。我發現.click()可以與Actions正常工作,但是直接操作鼠標的任何內容(例如移動或拖動)都不起作用。在創建驅動程序時設置此更正了問題。 – AndyPerfect 2013-05-29 22:55:47