如何从 Capybara/Poltergeist 中的另一帧切换到另一帧?
How to switch to a frame from within another frame in Capybara/Poltergeist?
我是 Rails 上的 Ruby 的新手,我正在开发一个由两个框架组成的目录网站:第一个包含产品系列,第二个动态显示列表当您在第一帧上单击这些系列中的机器时。发生这种情况是因为表单目标是该框架的名称:
我已经检查过 但有一个重要的区别:我想通过工作 "within_frame('families_frame')" 迭代点击第一帧中的产品系列链接并获取机器列表第二帧。但是 "switch_to_frame" 和类似的解决方案不起作用,我收到以下错误:
switch_to_window
不应从 within
、within_frame
's' 或 within_window
's' 块中调用。 (水豚::范围错误)
因为我的迭代器从 "within_frame" 运行。如何切换到生成的框架,到达内容然后切换回工作框架?
HTML 结构是:
<HTML>
<FRAME NAME="families_frame" SRC=".../productfamily.jsp">
<FRAME NAME="machines_frame" SRC=".../blank.jsp">
</HTML>
非常感谢。
使用您发布的 html 结构,您需要在 within_frame 之外迭代,所以像这样
families = []
within_frame 'families_frame' do
families = page.all('the selector for the items to iterate on')
end
families.each do |family|
within_frame 'families_frame' do
family.click
end
within_frame 'machines_frame' do
# whatever you need to do in the machines frame
end
end
注意:这仅在家庭框架未更新的情况下才有效——如果是,您需要保留索引位置并在每次进入 families_frame 时查询它而不是能够遍历选择器的结果,否则你最终会得到陈旧的元素引用
我是 Rails 上的 Ruby 的新手,我正在开发一个由两个框架组成的目录网站:第一个包含产品系列,第二个动态显示列表当您在第一帧上单击这些系列中的机器时。发生这种情况是因为表单目标是该框架的名称:
我已经检查过 switch_to_window
不应从 within
、within_frame
's' 或 within_window
's' 块中调用。 (水豚::范围错误)
因为我的迭代器从 "within_frame" 运行。如何切换到生成的框架,到达内容然后切换回工作框架? HTML 结构是:
<HTML>
<FRAME NAME="families_frame" SRC=".../productfamily.jsp">
<FRAME NAME="machines_frame" SRC=".../blank.jsp">
</HTML>
非常感谢。
使用您发布的 html 结构,您需要在 within_frame 之外迭代,所以像这样
families = []
within_frame 'families_frame' do
families = page.all('the selector for the items to iterate on')
end
families.each do |family|
within_frame 'families_frame' do
family.click
end
within_frame 'machines_frame' do
# whatever you need to do in the machines frame
end
end
注意:这仅在家庭框架未更新的情况下才有效——如果是,您需要保留索引位置并在每次进入 families_frame 时查询它而不是能够遍历选择器的结果,否则你最终会得到陈旧的元素引用