Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Как правильно закрывать браузер открытый в классе синглтоне с помощью вебдрайвера webdrive.Chrome? [RSS Feed]

#1 Янв. 18, 2017 13:39:07

sys_dev
От:
Зарегистрирован: 2011-06-22
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно закрывать браузер открытый в классе синглтоне с помощью вебдрайвера webdrive.Chrome?

Как правильно закрыть браузер открытый объектом класса webdriver.Chrome из библиотеки selenium при использовании синглтона в модуле?

Вот синглтоны(из темы: http://python.su/forum/topic/31847/):

1. Вариант : @WoMax

 #!/usr/bin/env python
from selenium import webdriver
def singleton(cls):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return getinstance
@singleton
class Firefox(webdriver.Firefox):
    pass
if __name__ == '__main__':
    Firefox().get('https://www.ya.ru')
    Firefox().get('https://www.google.com')

2. Вариант моего друга
 from selenium import webdriver
class Chrome(webdriver.Chrome):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super().__new__(cls, *args, **kwargs)
            super().__init__(cls._instance, *args, **kwargs)
        return cls._instance
    def __init__(self, *args, **kwargs):
        pass

Синглтон написан в python-модуле и в нем же используется в методах из 3 классов расположенных в этом же модуле. Браузер открытых объектом webdriver.Chrome закрывается методом quit() этого класса. И при уничтожении объекта этого класса браузер автоматически не закрывается! Это нужно делать явно.

Как это сделать лучше всего? Мне видятся такие варианты:

1. Написать реализацию метода __del__() для синглтон класса
2. Написать функцию и повесить ее в atexit() . А в этой функции вызывать Chrome().quit()



Офлайн

#2 Янв. 18, 2017 19:03:49

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Как правильно закрывать браузер открытый в классе синглтоне с помощью вебдрайвера webdrive.Chrome?

sys_dev
Написать реализацию метода __del__() для синглтон класса
это 3 строчки кода, Карл…

Офлайн

#3 Янв. 19, 2017 11:39:04

sys_dev
От:
Зарегистрирован: 2011-06-22
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно закрывать браузер открытый в классе синглтоне с помощью вебдрайвера webdrive.Chrome?

WoMax
это 3 строчки кода, Карл…
То есть это и есть верный способ и другой тут будет не python-way ?



Офлайн

  • Начало
  • » Python для новичков
  • » Как правильно закрывать браузер открытый в классе синглтоне с помощью вебдрайвера webdrive.Chrome?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version