驱动程序。获取()完成时间太长,如何设置超时方法来处理它?

2024-04-25 22:34:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要测试的网站通常需要很长的时间来加载,我不想在需要测试的时候等待,所以我花了几乎一整天的时间从网上搜索答案。然而,我仍然没有找到一个完美的答案来解决这个问题。在

我的问题的实质是打开一个新的页面,例如使用驱动程序。获取(),花了太多的时间来完全加载,虽然我期望的元素出现了,但我应该在运行脚本时手动单击chrome的停止按钮几次。在

这是我以前试过的方法。在

def timeout(func):
def wrapper(*args, **kwargs):
    try:
        driver.set_page_load_timeout('10')
        func(*args, **kwargs)
    except Exception:
        print('This fucking function takes too long to finish!')
    finally:
        driver.execute_script('window.stop();')
return wrapper

我是这样用的:(例如)

^{pr2}$

但是,脚本经常抛出超时异常,甚至没有这样的元素,或者在其他地方不可点击,如果我删除上面的这些代码,则不会抛出任何异常。在

我只想找到一种方法,当加载一个页面花费了太多的时间,超过了我之前设置的超时时间,脚本会自动点击chrome的停止按钮,我确信我需要的所有元素都已经完全加载。在

PS:我用Python3.4编写selenium脚本,浏览器是chrome,我的操作系统平台是Win7x64。在


Tags: 方法答案脚本元素defdriver时间timeout