pytes + page object - не корректно работает assert

Здравствуйте!

Не могу сравнить элементы. Сравниваю текст элемента который мне возвращает селениум и обычный текст.

Сам тест:

import pytest
from selenium import webdriver
from Pages.Login.LoginPage import LoginPage

@pytest.yield_fixture()
def driver():
    browser = webdriver.Chrome()
    log = LoginPage(browser)
    yield log
    browser.quit()

def test_empty_fields(driver):
    driver.click_login_button()
    assert driver.assert_notification_empty_email_field() == "Required"

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

class LoginPage(Page):
    def assert_notification_empty_email_field(self):
        self.driver.find_element(*LoginPageLocators.NOTIFICATION_EMPTY_EMAIL_FIELD).text

Выхлоп такой

driver = <Pages.Login.LoginPage.LoginPage object at 0x000001820298CAC8>

    def test_empty_fields(driver):
        driver.click_login_button()
>       assert driver.assert_notification_empty_email_field() == "Required"
E       AssertionError: assert None == 'Required'
E        +  where None = <bound method LoginPage.assert_notification_empty_email_field of <Pages.Login.LoginPage.LoginPage object at 0x000001820298CAC8>>()
E        +    where <bound method LoginPage.assert_notification_empty_email_field of <Pages.Login.LoginPage.LoginPage object at 0x000001820298CAC8>> = <Pages.Login.LoginPage.LoginPage object at 0x000001820298CAC8>.assert_notification_empty_email_field

Test\test_suit.py:17: AssertionError

И еще вопрос. По фикстурам. В ней я объявляю драйвер и передаю его в инстанс. Почему уже после в модуле теста я не могу его вызвать. Например там где ассерт я не могу обратиться к драйверу и сказать: :assert_notification_empty_email_field().is_displayed(). Ругается что нет функции ‘is_displayed’

1 лайк

В методе

    def assert_notification_empty_email_field(self):
        self.driver.find_element(*LoginPageLocators.NOTIFICATION_EMPTY_EMAIL_FIELD).text

ты не делаешь return и метод возвращает None

По второму вопросу - разве можно брать метод is_displayed() для текста?
Получается

        self.driver.find_element(*LoginPageLocators.NOTIFICATION_EMPTY_EMAIL_FIELD).text.is_displayed()

Это ошибка.

P.S.

  • методы у тебя “странно” называются , Если тебе нужен будет этот элемент в другом контексте - ты его будешь дергать как assert_notification_empty_email_field?
2 лайка

Спасибо за совет с возвратом - сработало.