Webscraping时Selenium / ChromeDriver超时异常

时间:2015-09-28 16:12:49

标签: python selenium selenium-webdriver selenium-chromedriver

我已经建立了一个抓取网址的网络划分器。它偶尔有问题(不会一直发生)。我在代码的这个特定部分得到TimeOutException

tries = 0
while tries<1000:
    try:  
        domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
        domain = domain.text
        break
        except StaleElementReferenceException:
            tries+=1
            self.browser.refresh()

错误:

  

在findDomains中的文件“”,第389行       domain = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,“cite._Rm”)))文件“”,第78行,直到       raise TimeoutException(message,screen,stacktrace)TimeoutException:Message:

2 个答案:

答案 0 :(得分:1)

由于您将多次尝试包裹在while块中,只需处理TimeoutException

try:  
    domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
    domain = domain.text
    break
except (StaleElementReferenceException, TimeoutException):
    tries+=1
    self.browser.refresh()

请注意,如果不能重现问题,或者至少有一个指向您正在描述的偶然问题的目标网页链接,很难说更多。

答案 1 :(得分:0)

你得到超时异常,因为在超时期间找不到元素,尝试增加它或刷新页面,如下面的代码

tries = 0
while tries<1000:
    try:  
        domain=WebdriverWait(self.browser, timeout=10).until(
             EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))
        )
        domain_text = domain.text
        break
    except TimeoutException:
        tries+=1
        self.browser.refresh()