Как использовать другое значение метода класса в другом классе в python? - PullRequest
1 голос
/ 31 января 2020

У меня есть класс объекта страницы для страницы входа, где я создал метод.

from Resources.Locators import Locators
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


class LoginPage:

    def __init__(self, driver):
        self.driver = driver

    def user_login(self, username, password):
        self.driver.find_element(*Locators.username).send_keys(username)
        self.driver.find_element(*Locators.password).send_keys(password)
        self.driver.find_element(*Locators.login_button).click()
        try:
            element = WebDriverWait(self.driver, 60).until(
                EC.presence_of_element_located((Locators.invalid_error)))
            if element:
                error_message = element.text
                return error_message
        except:
            self.driver.find_element(*Locators.otp).send_keys("1234")
            self.driver.find_element(*Locators.otp_verify_button).click()

Ниже приведен файл теста, в котором мне нужно использовать значение error_message .

from selenium import webdriver
import unittest
from Pages.Login import LoginPage
from Resources.Test_Data import TestData
from Resources import Test_Data

class TestLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.get(TestData.base_url)
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def test_01_login_invalid(self):
        driver = self.driver
        login = LoginPage(driver)
        login.user_login("User123", "Password123")
        print(login.error_message)

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()
I receive the error as follow:
print(login.error_message)
AttributeError: 'LoginPage' object has no attribute 'error_message'

Я хочу использовать error_message Значение сверху первого класса для некоторой проверки. Как мне это сделать?

1 Ответ

1 голос
/ 31 января 2020

В вашем коде error_message - это просто локальная переменная, которая возвращается функцией user_login. Если вы хотите получить к нему доступ, вам нужно сделать его атрибутом.

Пример:

from Resources.Locators import Locators
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


class LoginPage:

    def __init__(self, driver):
        self.driver = driver
        self.error_message = None

    def user_login(self, username, password):
        self.driver.find_element(*Locators.username).send_keys(username)
        self.driver.find_element(*Locators.password).send_keys(password)
        self.driver.find_element(*Locators.login_button).click()
        try:
            element = WebDriverWait(self.driver, 60).until(
                EC.presence_of_element_located((Locators.invalid_error)))
            if element:
                self.error_message = element.text
                return self.error_message
        except:
            self.driver.find_element(*Locators.otp).send_keys("1234")
            self.driver.find_element(*Locators.otp_verify_button).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...