在我看来,有一种情况,可点击图标仅当包含 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/