вторник, 20 октября 2020 г.

Как проверить что элемент содержит определенный класс (пример - Error class)?

 

Как проверить что элемент содержит определенный класс? Python-Selenium



Задача:

Существует форма, которую пользователь должен заполнить. В форме есть обязательные поля. Если пользователь их не заполнил, то поле подсвечивается красным цветом. За подсветку поля отвечает класс ERROR. Этот класс присваивается элементу, если поле не заполнено.

Нужно проверить содержит ли элемент этот класс. Задача усложняется тем,  что все элементы имеют не только этот один класс, а нужно проверить именно его наличие.


def test_user_should_see_warning_if_fields_are_not_filled(driver):
    support_page.open(driver)
    support_page.click_send_message_button(driver)
   assert support_page.is_name_field_has_error_class(driver), \
       "The Name field has no Error class"

@allure.step("Check that Name field has Error class when this field does not filled")
def is_name_field_has_error_class(driver):
    name_input_field = HtmlElement(driver, (By.CSS_SELECTOR, '[name="name"]'))
    return 'error' in name_input_field.get_attribute("class")

class HtmlElement:
    def __init__(self, driver, locator):
        self.driver = driver
        self.element_locator = locator

def get_attribute(self, attribute_name, timeout=30):
    wait = WebDriverWait(self.driver, timeout)
    try:
        element = wait.until(expected_conditions.presence_of_element_located(self.element_locator))
        return element.get_attribute(attribute_name)
    except TimeoutException:
        raise NoSuchElementException("Can't find element with locator " + str(self.element_locator) +
                                     " after " + str(timeout) + " seconds.")

Комментариев нет:

Отправить комментарий

Самые полезные ФУНКЦИИ Пайтона

 1)  PRINT - выводит на печать переменную, указанную в скобках print (average)   2)  LEN - посчитать количество элементов в списке student...