Изменить то, что экземпляр возвращает Python - PullRequest
0 голосов
/ 27 апреля 2018

Я создал одноэлементную оболочку для селенового веб-драйвера.

class Singleton(type):
    _instances = {}
    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]

class Driver(metaclass=Singleton):   
        """Ensures theres only 1 Driver open at any time.
        If the driver is closed, tries to quit the previous
        instance, and recreates a new one"""

        def __init__(self):
            self._driver = self.load_selenium_driver()

    @staticmethod
    def load_selenium_driver():
        _chrome_driver_locn = CHROME_DRIVER_LOCATION
        _driver =  webdriver.Chrome(_chrome_driver_locn)
        return _driver

    @property
    def driver(self):
        """Creates a new driver if the previous one is closed,
        and quits the instance of the chrome driver."""
        if self._web_browser_is_open():
            return self._driver
        else:
            try:
                self._driver.quit()
            finally:
                self._driver = self.load_selenium_driver()
                return self._driver

    def _web_browser_is_open(self):
        try:
            self._driver.title
            return True
        except WebDriverException:
            return False

Бег a = Driver() Я хочу получить доступ к методам Driver.driver в a, чтобы мне не нужно было делать a.driver.get('google.com'), но a.get('google.com').

Вопрос:

Как создать экземпляр Driver, вернуть объект driver (находится в свойстве Driver.driver), а не экземпляр Driver?

1 Ответ

0 голосов
/ 27 апреля 2018

Из обсуждений в комментариях то, что я прошу, невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...