Selenium 和 :hover css

Posted

技术标签:

【中文标题】Selenium 和 :hover css【英文标题】:Selenium and :hover css 【发布时间】:2011-02-27 17:24:07 【问题描述】:

使用 selenium-rc 和 java 客户端,我想测试当用户将鼠标移到它上面时打开的菜单。当鼠标离开菜单时它会关闭。这是使用:hover css 完成的,没有任何javascript

在 selenium 中,有很多鼠标操作的方法,但似乎没有一个会触发任何要使用的 css :hover 样式。

Google 表明我并不孤单,但还没有解决方案。有些人评论说您必须添加一些 javascript 代码;但是,在 selenium rc 中,我认为我什至没有合适的位置来存放用户贡献的附加 javascript 代码。

我希望下面的代码能够工作,因为 div#navi_settings 包含的菜单包含 - 通常不可见 - 一个元素:

selenium.mouseHover("css=div#navi_settings");
assertTrue(selenium.isVisible("//a[contains(text(), 'Text on link')]"));

很遗憾,moveHover() 方法尚不存在。

【问题讨论】:

你是如何解决这个问题的? 通过手动测试这个:-(. 【参考方案1】:

我找不到使用 Selenium 接口执行此操作的方法。但是,由于我使用的是 Selenium 2,因此我可以使用 WebDriver API,按照http://groups.google.com/group/selenium-developers/msg/8210537dde07155f?pli=1

在你的情况下,如果你可以升级到 Selenium 2,这样的事情可能会起作用:

WebDriver webDriver; 
...
((RenderedWebElement) webDriver.findElement(By.cssSelector("div#navi_settings"))).hover();

【讨论】:

这适用于支持 Selenium 原生事件的平台(Linux 和 Windows)。在 Mac 上,您目前运气不佳:groups.google.com/group/webdriver/browse_thread/thread/…【参考方案2】:

mouseOver 方法将激活 :hover 伪类。

【讨论】:

从什么时候开始的?在 selenium 服务器 v2.0 [a2] 和 Core v2.0 [a2] 中,这不起作用,至少对于 firefox 3.5。 然后,当您需要单击其中一个元素时,使用一些 javascript 使菜单可见。这就是我最终做的事情,而且效果很好。或者尝试在 Selenium 邮件列表中提问。 邮件列表:好的,你的意思是,但菜单可见性是 css 驱动的,效果很好。测试对菜单项的点击不是问题。当用户将鼠标悬停在菜单上时,我正在测试 可见性本身。将应用程序更改为使用 javascript 而不是 css 是不可能的。

以上是关于Selenium 和 :hover css的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 Selenium 和 Python 绑定执行鼠标悬停(悬停在元素上)?

selenium 怎么获取canvas图像中的某个动态元素

如何使用 Selenium Python 获取文本颜色

关于CSS 中a和a:hover起到啥作用?

:not(:hover) 和 :hover 是隐藏可访问元素的安全方法吗?

同时使用 :after 和 :hover