当Python找不到元素时,它会花费很多时间



我的代码使用chromedriver扫描了很多互联网页面,并在每个页面中搜索带有"find_elements_by_xpath"的相同元素

Lines = driver.find_elements_by_xpath(
'//*[@id="top"]/div[contains(@style, "display: block;")]/'
'div[contains(@style, "display: block;")]//tbody//a[contains(@title, "Line")]')

当它找到一个或多个时,它工作快速而良好。但是,当 XPath 不存在时,它会运行 6-7 秒,然后继续前进。

我可以将搜索限制在 1 秒内,如果一秒钟内没有找到,请继续前进吗?有没有办法做到这一点?

尝试使用 ExplicitWait,如下所示:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException
try:
Lines = wait(driver, 1).until(EC.presence_of_all_elements_located((By.XPATH, '//*[@id="top"]/div[contains(@style, "display: block;")]/'
'div[contains(@style, "display: block;")]//tbody//a[contains(@title, "Line")]')))
except TimeoutException:
pass

这应该允许您等待 1 秒钟,直到找到至少一个元素并获取所需 WebElements 的列表或不执行任何其他操作

相关内容

  • 没有找到相关文章

最新更新