0

我正在使用 python 处理 selenium,用于从 url 下载文件。

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 秒内,如果由于网络问题未加载此 url,则应每 60 秒重试一次,并在 3 次尝试后继续。

我怎样才能在这段代码中实现这一点?

谢谢

4

2 回答 2

1

你可以使用browser.implicitly_wait(60)

WebDriver.implicitly_wait

于 2013-08-26T18:11:31.033 回答
1

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

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

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

这意味着它最多会运行 3 次,每次等待 60 秒,一旦成功,它将退出循环。如果这一切都没有成功那么它就会崩溃。

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

于 2013-08-27T08:28:32.400 回答