【问题标题】:Check for page loading (Python)检查页面加载(Python)
【发布时间】:2011-04-07 20:27:29
【问题描述】:

在 Python 中,有什么方法可以查明我打开的浏览器窗口是否已完全加载,可能是使用包(例如,webbrowser)?完全加载后,我想对其进行截图并保存。

【问题讨论】:

    标签: python browser


    【解决方案1】:

    严格来说,你不能用 python 做到这一点。但是,使用 Javascript,您可以等待“onload”事件并向您的 python 后端发送 ajax 请求。 JQuery 应该是这样的。

    //callback for the onload
    jQuery(document)
            .ready(function() {
    
    $.ajax({
       type: "POST",
       url: "thePythonScript.py",
       data: "name=Daniel&location=Somewhere",
       success: function(msg){
         alert( "Data Saved: " + msg );
       }
     });
    
    });
    

    【讨论】:

    • 我不想使用 Python 包以外的任何东西。无论如何,win32api有这个问题吗?感谢您的帮助。
    • 如果浏览器在不同的机器上运行,那么 JS 是你唯一的选择。为什么你不想为此使用 JS?
    • 主要是因为我从来没有用过 JS,我现在想了解更多关于 Python 的花里胡哨的知识。
    • 明白了,你有更多的学术动机。祝你好运!
    【解决方案2】:

    您可以使用例如Selenium;不过,我不确定这是否是您想要的。看到这个short guide

    #!/usr/bin/env python
    
    from selenium import selenium
    
    sel = selenium('localhost', 4444, '*firefox', 'http://www.google.com/')
    sel.start()
    sel.open('/')
    sel.wait_for_page_to_load(10000)
    sel.stop()
    

    您还可以使用 COM 挂钩来控制 IE(呃):

    import win32com.client
    import time
    
    ie = win32com.client.Dispatch( "InternetExplorer.Application" )
    ie.Navigate( <some URL> )
    time.sleep( 1 )
    print( ie.Busy )
    

    有一个包含所有 COM 功能的模块:IEC.py

    【讨论】:

    • “sel.wait_for_page_to_load(10000)”究竟是什么意思?这是否意味着我必须等待 10000 秒,还是像最大时间限制一样?
    • 我喜欢你的第二个建议,因为那样我就不需要安装任何新的东西了。唯一的问题是 - 除了第一次出现这个错误 - “pywintypes.com_error: (- 2147023174, 'RPC 服务器不可用。', None, None)"
    • @fixxxer:超时了。 selenium 文档会告诉你更多。我会尝试谷歌搜索 RPC 服务器错误,我认为您需要启动一些服务。可以正常访问IE中的页面吗?
    • 是的,我可以在 IE 中正常打开页面。如果没有谷歌搜索,我不会评论 RPC 问题。 :) 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多