我在 Ruby 上使用 Selenium 2 WebDriver。
如何使用 css(显示:无)点击隐藏链接? 该链接是子菜单,当鼠标悬停在菜单上时可见。
//编辑:
Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"link text","selector":"submenu2"}
我将“:id”更改为“:link_text”,因为子菜单没有 ID。 导航:
<ul id="nav-main">
-<li class="menu active">
<p>
<a href="/menu1">menu1</a>
</p>
-<ul> <-- begin display:none
-<li>
<p>
<a href="/submenu1">submenu1</a>
</p>
</li>
+<li>
</ul> <--end submenu
</li>
</ul>
当鼠标悬停在菜单上时,您可以看到子菜单。之前webdriver的子菜单不存在。
使用后续代码,我在 FF 左下角看到了来自 menu1 的链接,但子菜单未打开并因超时错误而中断。
menu = @driver.find_element(:link_text => "menu")
@driver.action.move_to(menu).perform
wait.until {
@driver.find_element(:link_text => "submenu").click
}
最佳答案
WebDriver 模拟用户操作,不允许点击用户无法点击的元素。
所以您应该做用户会做的事情:在单击之前将鼠标悬停在菜单上。在 Ruby 中你可以这样做,例如:
menu = driver.find_element(:id => "menu")
submenu = driver.find_element(:id => "submenu")
driver.action.move_to(menu).click(submenu).perform
ActionBuilder 类(由 Driver#action 返回)记录在案 here .
关于ruby - Selenium2 WebDriver Ruby => 如何点击隐藏链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6777886/