我已经建立了一个抓取网址的网络划分器。它偶尔有问题(不会一直发生)。我在代码的这个特定部分得到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:
答案 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()