2016-07-23 21 views
0

私はRuby on Railsを初めて使い、2つのフレームで構成されたカタログWebサイトで作業していました。最初のものには製品ファミリが含まれ、2番目のものにはそのファミリ内のマシンのリストが動的に表示されますフレーム。フォームのターゲットは、そのフレームの名前ですので、これが起こる: Capybara/Poltergeistの別のフレーム内からフレームに切り替える方法は?

私はすでにthis answerを視察してきたが、重要な違いがあります:私は繰り返し、「within_frame( 『families_frame』)を作業することにより、第1のフレームにおける製品ファミリのリンクを介してクリックします2番目のフレームのマシンの一覧を取得します。しかし、 "switch_to_frame"と同様の解決法は機能しません。次のエラーが発生します。 は、withinwithin_frameの 'within_window'のブロックから呼び出されるはずです。 (Capybara :: ScopeError)

私のイテレータは "within_frame"から実行されるため、どのようにして結果のフレームに切り替えることができますか?コンテンツに達した後、作業フレームに戻ることはできますか? HTML構造は次のとおりです。

<HTML> 
<FRAME NAME="families_frame" SRC=".../productfamily.jsp"> 
<FRAME NAME="machines_frame" SRC=".../blank.jsp"> 
</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 

このようなノート投稿したHTML構造で
+0

これが本当なら2つの兄弟フレーム(他のものに影響する)(奇妙なページ設定)あなたは親の元に戻らずに1つのフレームから別のフレームに移動することはできませんt。特定のフレームからは、その親またはその子フレームにしか移動できません。より完全な答えを得るためのhtml構造の例を示してください。 –

+0

ありがとう、私は実際のhtml構造を追加しましたが、部分は省略しました。 – Riman

答えて

0

:家族フレームはあまり更新されていない場合にのみ動作します - それは場合をセレクタの結果を反復処理するのではなく、families_frameに入るたびにindex_positionを保持してクエリを検索する必要があります。

+0

このメモに記載されている方法を詳しく教えてください。ファミリのフレームは更新されませんが、必要なのは家族をクリックしてマシンフレームに移動してテーブルを解析し、次に家族に戻って次のものをクリックすることです。 – Riman

+0

@RavshanKhそれは、ファミリフレームに行き、すべてのファミリ要素を解析することから始まります(私はそれらのセレクタがどのようなものになるのかわかりません) - それが親フレームに戻ります - そして、現在ファミリの各要素について、ファミリーフレームをクリックし、ファミリーエレメントをクリックし、親に戻り、マシンフレームにスワップします。そのフレームに必要なものを行い、親にスワップして、次のファミリーに繰り返します。 –

+0

ありがとう!それは魔法のように働いた!私はこれまでほとんど希望を失った! – Riman

関連する問題