我的代码使用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秒,如果它在一秒钟内找不到,那么继续前进?有没有办法做到这一点?
答案 0 :(得分: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秒钟,直到找到至少一个元素并获取所需的Web元素列表,否则不执行任何操作