我没有找到一个明确的答案来查找和操纵我的fancybox模态载荷webapp中的元素。
within("div#fancybox-wrap.fancybox-desktop.fancybox-type-iframe.fancybox-opened") do
page.find_by_id('blah container').click
end
这是一个更大的背景请求
<div class="fancybox-wrap fancybox-desktop fancybox-type-iframe fancybox-opened" style="width: 415px; height: auto; display: block; position: fixed; top: 20px; left: 467px; opacity: 1; overflow: visible;">
<div class="fancybox-skin" style="padding: 15px;">
<div class="fancybox-outer">
<div class="fancybox-inner" style="width: 385px; height: 229px; overflow: hidden;">
<iframe class="fancybox-iframe" name="fancybox-frame" frameborder="0" hspace="0" scrolling="auto" src="index.php?module=Yadda&action=[where I wan to be]&popup=Y&id=[unique]&width=1010&height=600">
[the stuff I want to access]
</iframe>
</div>
</div>
<div title="Close" class="fancybox-item fancybox-close">
这会产生以下拒绝...
Unable to find css "div#fancybox-wrap.fancybox-desktop.fancybox-type-iframe.fancybox-opened" (Capybara::ElementNotFound)
我需要添加/减去什么吗?
答案 0 :(得分:1)
css定位器不正确。
有
div#fancybox-wrap
表示id为“fancybox-wrap”的div。基于html,“fancybox-wrap”是一个类。因此,您实际上想要(注意“#”更改为“。”):
within("div.fancybox-wrap.fancybox-desktop.fancybox-type-iframe.fancybox-opened") do
page.find_by_id('blah container').click
end
答案 1 :(得分:0)
找到了一个受这个答案启发的更好答案
Temporarily set js_errors to false in Poltergeist
但只有在使用使用水豚与幽灵的poltergist时才会起作用
# think about it. this is what you do in real life
# Try to click thing you actually want. get caught by the the overlay then click to dismiss it away
tried_before = false
if page.has_css?('#autostart')
begin
click_link "Insurance", match: :first
rescue Capybara::Poltergeist::MouseEventFailed
# close the fancy box
if tried_before
raise e
end
find('#fancybox-close').click
retry
end
end
end
它做了什么?