ruby - Selenium2 WebDriver Ruby => 如何点击隐藏链接

标签 ruby webdriver selenium-webdriver

我在 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/

相关文章:

selenium - 如何在selenium webdriver中上传具有相对路径的文件

selenium - UnsupportedOperationError : sendKeysToActiveElement error while invoking sendKeys(Key. ENTER) 使用 Protractor 和 Internet Explorer 11

selenium-webdriver - 将原生 ES6 Promise 添加到 Typescript 中的 Protractor/WebDriverJS ControlFlow

java - 如何使用 Ruby、PHP 或 Java 解析/提取/提取 ASP.net 网站内容?

javascript - 通过 AJAX 更改 link_to 参数

java - Selenium Webdriver (Java) - 根据条件选择特定元素

haskell - 任何可用于 Selenium2/WebDriver 的纯函数式语言绑定(bind)?

c# - NUnit 3 重试测试n次

ruby - 以编程方式编辑 crontab 并强制守护进程刷新

ruby - 当我将参数传递给我的脚本时,使用 gets() 会出现 "No such file or directory"错误