【问题标题】:How to access frame with python selenium如何使用 python selenium 访问框架
【发布时间】:2016-05-05 23:13:43
【问题描述】:

我正在尝试在我认为包含在框架中的 html 页面上填写表单。 html 的相关部分如下所示:

<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

我的问题是,我怎样才能进入这个框架,或者如果没有必要进入这个框架来访问其中一个表单,我怎样才能直接访问这个表单?

【问题讨论】:

  • 从萤火虫检查你的框架或元素后有截图很好
  • 这是 90 年代的网站吗?我已经很久没有看到这些不推荐使用的帧了......这里最好的选择是使用 switch_to_frame 函数切换到该帧

标签: python selenium web-scraping


【解决方案1】:

我可能是错的,但据我所知,只有选择器是id只有在id时,才能使用@ 987654321。在您的情况下,请尝试使用以下内容:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多