2016-05-05 77 views
1

我試圖在html頁面上填寫表單,我相信它包含在框架中。 html的相關部分如下所示:如何使用python selenium訪問框架

<frameset rows="*" cols="*,183" frameborder="NO" border="0" framespacing="0"> 
<frameset rows="61,28,*,0,0" cols="*" frameborder="NO" border="0" framespacing="0"> 
<frame src="fr1_tab1.jhtml?NUM1=1462489510565" scrolling="NO" noresize name="frame1" title="page header - navigation"> 
<frame src="fr4_top.jhtml?NUM1=1462489510565" scrolling="NO" noresize name="frame1b" title="page header - search"> 
<frame name="frame4" title="main body" src="processShowMyPeapodPage2.jhtml?NUM1=1462489510565" noresize scrolling="AUTO"> 
<frame src="frame6.jhtml" marginwidth="0" marginheight="0" name="frame6" noresize frameborder="NO" border="0" title="empty"> 
<frame src="frame8.jhtml" marginwidth="0" marginheight="0" name="frame8" noresize frameborder="NO" border="0" title="empty"> 
</frameset> 

我正在查找的相關信息位於frame1b內部。使用Selenium,我已經證實,frame1b確實位於頁面上:

<code> 
for thing in driver.find_elements_by_tag_name('frame'): 
    print thing.get_attribute('name') 
</code> 

,輸出:

frame1 
frame1b 
frame4 
frame6 
frame8 
frame2 

frame3 

cancelFrame 

frame5 


frame6 

所以經過這一切,我嘗試使用driver.switch_to_frame('frame1b'),但我得到的錯誤NoSuchFrameException: Message: no such frame

我的問題是,我怎麼能進入這個框架,或者如果沒有必要進入這個框架來訪問它的一個窗體,我該如何直接訪問窗體?

+0

好從螢火 –

+0

檢查你的框架或元素後,有截圖這是從90年代一個網站?我還沒有看到這些過時的幀......這裏最好的選擇是使用switch_to_frame函數切換到該幀 –

回答

0

我可能是錯的,但據我所知,只有當選擇器是一個元素id時,纔可以使用driver.switch_to_frame(selector)。在你的情況下,嘗試使用以下:

driver.switch_to_frame(driver.find_element_by_xpath('//frame[@src="fr4_top.jhtml?NUM1=1462489510565"]'))