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 绑定执行鼠标悬停(悬停在元素上)?