2016-05-05 95 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"]'))