【发布时间】:2020-12-14 20:54:50
【问题描述】:
我在 Python 3.6 中使用 Selenium,它工作正常,但并非总是如此。 我有这个代码:
try:
table = wait.until(
EC.presence_of_element_located((
By.XPATH,
"/html/body/div/div[2]/div[1]/table/tbody/"
"tr[2]/td/table/tbody/tr/td/div/table[2]"
))
)
except TimeoutException:
driver.quit()
return {
"statusCode": 500,
"body": json.dumps({"error": "WebPage dont load"}),
"headers": {
"Content-Type": "application/json"
}
}
这是可行的,但有时会出现超时异常,我需要 100% 的时间使用它。我已经尝试过使用time.sleep(5),presence_of_all_elements_located,visibility_of_element_located,等待网页加载的功能,但问题没有解决。
我也有:
driver.implicitly_wait(20)
和
wait = WebDriverWait(driver, 30)
让等待变得隐式和显式。
【问题讨论】:
-
不要混合显式和隐式等待。那可能是你的问题。此外,您基于路径的 XPATH 很脆弱……尝试找到一种更好的方法来获取您正在寻找的元素。 (在 DOM 更新期间路径可能会改变...)
-
感谢您的评论,我将尝试仅使用显式等待。
标签: selenium selenium-webdriver webdriver python-3.6 webdriverwait