python selenium - 在找不到元素

时间:2017-08-09 17:20:19

标签: python selenium selenium-webdriver timeout selenium-chromedriver

我的代码使用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秒,如果它在一秒钟内找不到,那么继续前进?有没有办法做到这一点?

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元素列表,否则不执行任何操作