我正在使用python进行selenium从网址下载文件。
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2) # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', '/tmp')
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv')
browser = webdriver.Firefox(profile)
try:
browser.get("http://www.drugcite.com/?q=ACTIMMUNE")
browser.find_element
browser.find_element_by_id('exportpt').click()
browser.find_element_by_id('exporthlgt').click()
except:
pass
我想为此程序设置超时。意思是,如果在60秒内如果由于网络问题没有加载此网址,则应该在每60秒后重试一次,并且在3次尝试之后,它应该继续。
如何在此代码中实现此目的?
由于
答案 0 :(得分:1)
您可以使用 browser.implicitly_wait(60)
答案 1 :(得分:1)
没有内置任何东西可以做到这一点。但是,我不会说这太难了。
只需使用explicit wait查找页面加载时应该的特定元素。在此显式等待时将超时设置为60秒。
将此包装在一个最多执行三次的循环中。为了避免它不必要地运行三次,当显式等待实际运行时没有任何问题时输入break语句。
这意味着它最多可以运行三次,每次等待60秒,一旦成功,它将退出循环。如果在所有之后它没有成功,那么它就会崩溃。
注意:我实际上没有试过这个,但这只是一个合乎逻辑的解决方案!