find_elements_by_css_selector не дает мне никакого вывода, как с этим справиться? - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь получить значения из списка. Есть вероятность, что я могу не получить никакого значения, но хочу продолжить работу с остальным кодом, но его получение не удалось. Как справиться с ситуацией, когда в списке нет значения.

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)

происходит исключение, когда я не получаю никакого значения.

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Проверьте счетчик 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
1 голос
/ 07 мая 2019

Исключение не генерируется 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 может привести к неожиданному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...