【问题标题】:mouse hover is not working in safari ,selenium web driver鼠标悬停在 safari 中不起作用,硒网络驱动程序
【发布时间】:2014-12-26 15:35:11
【问题描述】:

我使用 Actions 将鼠标悬停在 FF 和 chrome 中,它工作正常。但是相同的代码在 safari 中不起作用。我正在使用 mac OS 和 selenium webdriver 和 java。

我试过下面的代码。

 new Actions(driver).moveToElement(element).build().perform();

JS:

String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}";
                    JavascriptExecutor js = (JavascriptExecutor) driver;
                    js.executeScript(mouseOverScript, element);

这是一个阻碍问题。任何帮助表示赞赏。

【问题讨论】:

  • 您是否检查过 selenium 是否与您正在测试的 Safari 版本兼容?
  • @YuZhang,是的,它是兼容的。

标签: java macos safari selenium-webdriver mousehover


【解决方案1】:

执行鼠标悬停需要使用 WebDriver 的高级用户交互 API。在Java 语言绑定中,这是由Actions 类完成的。不幸的是,目前SafariDriverdoes not implement the Advanced User Interactions API,所以你不能直接完成这个。在实现之前,您可能可以使用 JavaScript 模拟它来触发事件触发我的鼠标悬停。

【讨论】:

  • 感谢您的回复。我上面提到的 Java 脚本在一种情况下运行良好,而在另一种情况下则不行。真奇怪。如果你有任何java脚本代码sn-p,你可以分享吗?感谢您的帮助。
  • 考虑到现在一年多了,Selenium 的人还没有维护 Safari 驱动程序,它可能不是来自他们......叹息。
  • 三月。 '18,仍然没有进展。 :(
  • @SiKing,考虑到 Selenium 项目不再维护 Safari 驱动程序,我不确定这是对该项目的有效投诉。然而,Apple确实为 Safari 提供了驱动程序,并且已经有一段时间了。如果该驱动程序没有实现动作 API,那几乎不是 Selenium 项目的错。
  • 只是好奇,“使用 JavaScript 触发事件会触发我的鼠标悬停”。看起来像? browser.execute() 中的内容是什么?
猜你喜欢
  • 2018-08-27
  • 2013-01-01
  • 2012-03-07
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
相关资源
最近更新 更多