![](/img/trans.png)
[英]Sklearn.linear_model import LinearRegression does not work on data series but does for data frames. Why?
[英]“This browser does not support frames.”
我正在使用 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>
<body bgcolor="#FFFFFF">
This browser does not support frames.
</body>
</noframes>
</frameset>
我的硒版本是 2.53.2。 我尝试使用 Firefox 和 Chrome 驱动程序 2.21。
如果我正确理解您的问题,您就不会收到任何错误。 driver.page_source
显示的是页面的实际 HTML。 在您的情况下,该页面包含 2 个框架,以及名为<noframes>
附加部分,如果最终用户的浏览器不支持框架,则最终用户会看到这些部分。 所以你看到的不是针对你的错误。
我建议您的自动化,一起忽略整个<noframes>
部分。 只有非常非常旧的浏览器(例如 IE 2)不支持框架(请参阅此处有关框架的详细说明)。
现在,如果我理解正确,您的麻烦是您无法选择任何元素,因为您的元素在框架中。 好吧,Selenium 提供了一整套处理帧的函数。 见这对硒对Python的。
所以在选择任何其他元素之前,您需要选择并切换到相应的框架。 例如:
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 和其他选择器来选择它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.