我的观点是,仅当包含div的可点击图标悬停在其上时,该图标才可见(使用Knockout JS,SCSS)。像这样的东西:
<div id="button_div">
<i id="icon" data-bind="click: dosomething"></i>
</div>
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
虽然这不会引发错误,但也不会单击按钮。
有人知道我可能做错了什么吗?
经过一番艰苦的尝试和错误,我设法找到了可行的解决方案
button_div = find("#button_div_id").native
icon = find("#icon_id").native
page.driver.browser.action.move_to(button_div, :right_by => -50).click.perform
icon.click
不知道为什么我必须手动告诉Capybara向左移动50px,但这似乎可以解决问题。
另外,我在安装代码中添加了以下行:
page.driver.browser.manage.window.maximize
这样可以确保在运行测试之前最大化窗口。我不确定100%,但这可能与修复有关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句