我正在尝试获取列表的值。我有可能没有任何价值,但想继续其余的代码,但是失败了。如何处理列表中没有值的情况。
WebDriverWait(self.driver, 10, 0.1).until(
EC.presence_of_element_located((By.CSS_SELECTOR, self.e_css_project_search)))
projects = self.driver.find_elements_by_css_selector(self.e_css_project_search)
pro_flag = False
print(projects)
当我没有任何价值时,它将变为异常。
答案 0 :(得分:1)
find_elements
不会引发该异常,如果找不到元素,则将返回一个空列表,WebDriverWait
将引发该异常,如果未找到元素,则将引发TimeoutException
您可以将其放在try except
块中,也可以使用implicitly_wait
代替WebDriverWait
driver.implicitly_wait(5)
projects = self.driver.find_elements_by_css_selector(self.e_css_project_search)
pro_flag = False
print(projects)
driver.implicitly_wait(0)
这将寻找至少一个元素出现在DOM中,最多5秒。
*重要的是将implicitly_wait
设置为0,将其与WebDriverWait
混合会导致意外行为。
答案 1 :(得分:1)
检查列表的length
计数。如果长度> 0,它将打印列表。否则继续。
while(True):
projects=WebDriverWait(self.driver, 10, 0.1).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, self.e_css_project_search)))
if(len(projects)>0):
print(projects)
break
else:
continue