ruby - capybara 与 Selenium : Can't click on hidden element

标签 ruby selenium knockout.js capybara

在我看来,有一种情况,可点击图标仅当包含 div 悬停在其上时才可见(使用 Knockout JS、SCSS)。像这样的事情:

HTML

<div id="button_div">
   <i id="icon" data-bind="click: dosomething"></i>
</div>

SCSS

i {
  display: none;
}

#button_div:hover {
   i {
      display: block;
   }
}

页面上一切正常,但我似乎不知道如何单击 capybara 中的元素。我尝试将 :visible 符号添加到该方法中,但没有成功:

find('#icon', visible: false).click

这给了我一个“Selenium::WebDriver::Error::ElementNotVisibleError”错误。

使用:

Capybara.ignore_hidden_elements = false

给我完全相同的错误

我还尝试过使用 Selenium Action,例如:

button_div_element = find('#button_div').native
button_element = find('#button', visible: false).native
page.driver.browser.action.move_to(button_div_element).click(button_element).perform

虽然这不会引发错误,但也不会单击按钮。

有人知道我可能做错了什么吗?

最佳答案

Capybara 旨在模拟用户,因此您无法单击不可见元素,因为用户无法单击。但是,您应该能够复制用户操作以使元素可见,然后单击它

find('#button_div').hover
find('#icon').click

如果这不会引发错误,但似乎也没有单击按钮,请尝试在两个操作之间短暂休眠,因为您可能会出现动画外观,从而导致单击错过项目

关于ruby - capybara 与 Selenium : Can't click on hidden element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38266922/

相关文章:

ruby - 在 ruby​​ 测试中启动 Web 服务器

ruby-on-rails - Rails 使用什么 Ruby 技术让我的 Controller 方法呈现 View ?

java - Selenium 和并行化 JUnit - WebDriver 实例

arrays - Ruby on Rails - 将大数据(超过 2.7M)记录播种到生产数据库

ruby - 在哪里可以找到 Rails API rdoc 模板

testing - 如何对 selenium webdriver 测试进行分类或分组

java - 如何在 spring boot 中运行并行测试 jUnit5 - Cucumber 版本 5 及更高版本

javascript - Knockout.js 正在将数字转换为字符串

javascript - 无法通过 Chosen 和 Knockout Binding 取消选择选项

javascript - ko.computed 只适用于最后一行