我需要测试的网站通常需要花费很多时间来加载,我不想等待我需要测试它,所以我花了差不多一整天时间从互联网上搜索答案。但是,我仍然没有找到解决这个问题的完美答案。
我的问题的关键是打开一个新页面,比如使用driver.get(),需要花费太多时间才能完全加载,虽然我期望的元素出现了,我应该多次点击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
我以这种方式使用它:(例如)
url = 'http://igame.163.com'
@timeout
def openwebsite(url):
driver.get(url)
openwebsite(url)
但是,脚本经常抛出超时异常,甚至没有这样的元素,或者在其他地方无法点击,如果我删除上面的这些代码,则不会抛出异常。
我只是想找到一种方法,当加载页面花费太多时间,超过我之前设置的超时时,脚本会自动点击chrome的停止按钮,我确信我需要的所有元素已被完全加载。
PS:我使用python 3.4编写selenium脚本,浏览器是chrome,我的操作系统平台是Win7 X64。