Python, дающий объект 'module', не вызывается при попытке создать экземпляр с помощью ссылочной переменной класса - PullRequest
0 голосов
/ 10 января 2019

При попытке создать класс со ссылкой я получаю сообщение об ошибке «объект модуля не вызывается»: импортируйте LoginPage как loginPage. Однако, когда я пытаюсь импортировать только сам класс, импортирующий LoginPage.LoginPage как loginPage, я получаю другую ошибку, говоря, что модуль не содержит этот объект.

Я не уверен, что так я создаю объект, используя ссылку в скобках. Есть ли другой способ сделать это? Я также пробовал pageClassRef.LoginPage (), та же ошибка «модуль» не вызывается

import ....
import inspect
import LoginPage as loginPage

#Singleton class type
class Singleton(type):

    def __init__(cls, name, bases, dic):
        super(Singleton, cls).__init__(name, bases, dic)
        cls.instance = None

    def __call__(cls, *args, **kwargs):
         if cls.instance is None:
            cls.instance = super(Singleton, cls).__call__(*args, **kwargs)
        return cls.instance

class NavTestSession(object):

    # Config properties
    __metaclass__ = Singleton

    def __init__(self, configManager):
        self.cfgManager = configManager


        self.navTestEngine = NavTestEngine.Navigator(navVersion, resolution, scoreList)


    def getConfigManager(self):
        return self.cfgManager

    def startNavigating(self):
        return self.createPageObject(loginPage)


def createPageObject(self, pageClassRef):
    # Create page factory method and validation

    newPageObj = pageClassRef()
    #print(newPageObj)
    newPageObj.validatePage()

    return newPageObj

def startNewSession(self):
    loginPage = self.navTestEngine.launchAppFromMenu()

    return loginPage

LoginPage.py

import NavPageObject

class LoginPage(NavPageObject):

    # Image to validate the current page
    PAGE_VALIDATION_IMAGE = "Views_SIGNIN.png"

    # Images of objects on the current page

    USERNAME_INPUT_FIELD_1 = "Input_USERNAME_1.png"

    USERNAME_INPUT_FIELD_2 = "Input_USERNAME_2.png"

    PASSWORD_INPUT_FIELD = "Input_PASSWORD.png"

    def __init__(self):
        super(LoginPage, self).__init__()

    def validatePage(self):
        if not self.navTestEngine.imageExists(self.PAGE_VALIDATION_IMAGE, 
super().getCurrentRegion()):
            raise FindFailed("Page Validation fail at %s" % __file__)

    def typeUsername(self, username):
        self.navTestEngine.clickWithRetry(USERNAME_INPUT_FIELD_1)

        type("blahblah")

        return self

    def typePassword(self, password):
        return self

    def clickLogin(self):
        return self

1 Ответ

0 голосов
/ 10 января 2019

Я думаю, проблема в том, что вы пытаетесь импортировать LoginPage как loginPage. почему бы вам просто не набрать "из LoginPage импортировать LoginPage как страницу входа"

...