我是Ruby on Rails的新手,我正在开发一个目录网站,它包含两个框架:第一个包含产品系列,第二个框架动态显示这些系列中的机器列表。第一帧。这是因为表单目标是该帧的名称:
我已经检查了this answer但是有一个重要的区别:我想通过工作“within_frame('families_frame')”迭代地点击第一帧中的产品系列链接,并获取机器列表第二帧。但是“switch_to_frame”和类似的解决方案不起作用,我收到以下错误:
switch_to_window
不应该从within
,within_frame
'或'within_window
's'块中调用。 (水豚:: ScopeError)
因为我的迭代器是从“within_frame”运行的。如何切换到生成的帧,到达内容然后切换回工作帧? HTML结构是:
<HTML>
<FRAME NAME="families_frame" SRC=".../productfamily.jsp">
<FRAME NAME="machines_frame" SRC=".../blank.jsp">
</HTML>
非常感谢你。
答案 0 :(得分:0)
使用您发布的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时查询它而不是能够迭代通过选择器的结果,或者你最终会得到过时的元素引用