重新加载时间&在硒中重试以获取网址

时间:2013-08-26 11:04:20

标签: python selenium selenium-webdriver

我正在使用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次尝试之后,它应该继续。

如何在此代码中实现此目的?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用 browser.implicitly_wait(60)

WebDriver.implicitly_wait

答案 1 :(得分:1)

没有内置任何东西可以做到这一点。但是,我不会说这太难了。

只需使用explicit wait查找页面加载时应该的特定元素。在此显式等待时将超时设置为60秒。

将此包装在一个最多执行三次的循环中。为了避免它不必要地运行三次,当显式等待实际运行时没有任何问题时输入break语句。

这意味着它最多可以运行三次,每次等待60秒,一旦成功,它将退出循环。如果在所有之后它没有成功,那么它就会崩溃。

注意:我实际上没有试过这个,但这只是一个合乎逻辑的解决方案!