2016-07-23 75 views
0

我是Ruby on Rails的新手,我正在製作一個由兩個框架組成的目錄網站:第一個包含產品系列,第二個動態顯示這些系列中的機器列表,當您在第一個框架上單擊它們時幀。出現這種情況,因爲形式的目標是框架的名字: 如何切換到在水豚/ Poltergeist另一幀內的幀?

我已經檢查this answer但有一個重要的區別:我要反覆地通過在第一幀的產品系列點擊鏈接的工作「within_frame(‘families_frame’) 「並獲得第二幀中的機器列表。然而,「switch_to_frame」和類似的解決方案不起作用,我得到以下錯誤: switch_to_window不應該從within's,within_frame's或within_window的塊中調用。 (水豚:: ScopeError)

因爲我的迭代器從「within_frame」運行。如何切換到結果幀,到達內容然後切換回工作幀? HTML的結構是:

<HTML> 
<FRAME NAME="families_frame" SRC=".../productfamily.jsp"> 
<FRAME NAME="machines_frame" SRC=".../blank.jsp"> 
</HTML> 

非常感謝。

+0

如果這真的是兩個兄弟姐妹框架,一個影響另一個(一個奇怪的頁面設置),你不能從一個框架到另一個沒有返回到父母冷杉噸。從給定的框架,你只能去它的父母或它的子框架。顯示更完整答案的html結構示例。 –

+0

感謝您的迴應,我添加了實際的html結構,但省略了部分。 – Riman

回答

0

隨着你發佈你需要你的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結構:這隻會工作,如果家屬框架不被太更新 - 如果它你每次進入families_frame時都需要保留一個索引位置並進行查詢,而不是能夠遍歷選擇器的結果,否則最終會出現陳舊的元素引用

+0

您能否詳細說明您在備註中提及的方法?家庭框架沒有更新,但我需要的是點擊一個家庭,然後去機器框架和解析表,然後回到家庭,單擊下一個等。 – Riman

+0

@RavshanKh這正是我發佈的代碼將是什麼做 - 它首先轉到家庭框架並解析所有家庭元素(我不知道這些選擇器會是什麼) - 然後它返回到父框架 - 對於現在在家庭中的每個元素,它交換到家庭框架,點擊家庭元素,返回父母,交換到機器框架 - 你在那個框架中做任何你需要的事情,交換回父母,並迭代到下一個家庭 –

+0

非常感謝!它像魔術一樣工作!在這之前我幾乎失去了希望! – Riman

相關問題