“此浏览器不支持框架。” [关闭]

问题描述 投票:0回答:1

我正在使用Python + Selenium与具有框架集和框架的网页进行交互。

但是,当我执行类似print driver.page_source的操作时,出现此错误:

<frameset cols="*" border="0" framespacing="0" rows="118,*" frameborder="0" onbeforeunload="unload()">
    <frame src="/xxx/frameset/xxx.html" name="ENTETE_WIN" id="ENTETE_WIN" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" />
    <frame src="/xxx/frameset/bodyFrame.html" name="BODY_WIN" id="BODY_WIN" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" />
    <noframes>
        &lt;body bgcolor="#FFFFFF"&gt;
        This browser does not support frames.
        &lt;/body&gt;
  </noframes>
</frameset>

我的硒版本为2.53.2。我曾尝试过使用驱动程序2.21的Firefox和Chrome。

python selenium selenium-chromedriver selenium-firefoxdriver
1个回答
2
投票

如果我正确理解了您的问题,则不会出现任何错误。 driver.page_source显示的是页面的实际HTML。在您的情况下,该页面包含2个框架以及称为<noframes>的附加部分,最终用户将在该部分中查看其浏览器是否不支持框架。因此,您所看到的并不是针对您的错误。

我建议您使用自动化功能,请完全忽略整个<noframes>部分。仅非常老旧的浏览器(例如IE 2)不支持框架(请参见框架here的详细说明)。

现在,如果我理解正确,您的麻烦在于您无法选择任何元素,因为您的元素位于框架中。好吧,Selenium提供了处理框架的整套功能。有关Python上的Selenium,请参见this

因此,在选择任何其他元素之前,您需要选择并切换到相应的框架。例如:

driver.switch_to_default_content()
driver.switch_to_frame("ENTETE_WIN")

将您切换到左侧框架(第一条语句确保您首先在“主”窗口中)。或

driver.switch_to_default_content()
driver.switch_to_frame("BODY_WIN")

切换到右框。

所有其他HTML元素都在这些框架内,因此您可以使用常规xpath,css和其他选择器来选择它们。

© www.soinside.com 2019 - 2024. All rights reserved.