У меня есть элемент ввода HTML для имени при регистрации.
<div class="form-group" data-test="signup-form-first-name">
<label for="first-name">First Name</label>
<input type="text" id="first-name" name="first-name" autocomplete="given-name" class="fbkr-input gray error" value="" background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: pointer;">
<div aria-live="polite" class="label label-danger">
First Name is required.
</div>
</div>
Элемент с классом опасности-метки виден только в случае ошибки и пустого поля. Я пытаюсь проверить, является ли этот элемент видимым при тестировании потока регистрации, но каждый раз, когда я пытаюсь это сделать, он терпит неудачу. Я попытался изменить скрипт, чтобы он использовал только класс (.label-danger), но, увы, все равно ничего. Вот код, с которым я пытаюсь это сделать.
def is_element_error_label_visible(self, element_data_attribute: str) -> bool:
try:
element_present =
expected_conditions.presence_of_element_located(
(By.CSS_SELECTOR, f".
{self._build_data_attribute(element_data_attribute)} .label-danger"))
WebDriverWait(self.remote_web_driver,
15).until(element_present)
except NoSuchElementException:
return False
return True
Значение, которое
f"{self._build_data_attribute(element_data_attribute)} .label-danger"))
возвращает: [data-test = "signup-form-first- name "] .label-danger
Это неправильный способ получить элемент с помощью селектора CSS? Или есть гораздо более простой способ для этого. Пожалуйста, помните, что я не хочу использовать xPath, так как мне нравится поддерживать мой код в чистоте, поэтому я использую атрибут data-test .