假设浏览器中已经打开了一个选项卡。其URL为:
view-source:http://www.google.com/webhp?source=search_app
现在它已经打开并显示了,我只想阅读客户端窗口中的文本。(获取页面的上下文,或获取其对象(而不是创建新的浏览器对象),或其他什么。然后只需阅读页面。)
在Selenium,Splinter中有任何方法允许这样做吗?谢谢你的帮助。
如果你问是否可以连接到已经打开的浏览器,我相信答案是"否"。
您可以直接使用Selenium获取页面的Source:WebDriver.getPageSource().
但是,如果您使用view-source:url
,浏览器将向您显示一个html页面,其中包含格式的源。例如,Firefox将每一行都封装在一个<span id="lineX"></span>
中。不进行解析,只使用getPageSource
而不使用view-source
。
请仔细阅读getPageSource
:的文档
获取最后加载的页面的源。如果页面在加载后被修改(例如,通过Javascript),则不能保证返回的文本是修改后的页面的文本。请参阅正在使用的特定驱动程序的文档,以确定返回的文本是反映页面的当前状态还是反映web服务器上次发送的文本。返回的页面源是底层DOM的表示:不要期望它以与web服务器发送的响应相同的方式进行格式化或转义。把它想象成一个艺术家的印象。
这是我过去常做的事情:
- 要求selenium打开浏览器
- 显示一个弹出窗口/消息窗口以暂停执行
- 在浏览器中打开URL并手动执行所有相关操作
- 完成后(即在目标页面上),我在弹出窗口上单击"确定",然后代码继续,提取/执行我们希望在当前浏览器中打开的目标页面上执行的任务