Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер [RSS Feed]

#1 Окт. 25, 2015 03:47:27

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер

Доброго времени суток.
Подскажите пожалуйста по такому вопросу:

Есть примерно такой код

class MyClass:
    def method1(self):
        # bla-bla-bla
        self.method2(info1, info2)
    def method2(self, info1, info2):
        driver = webdriver.Firefox()
        # la-la-la
        driver.quit()
По мере поступления данных из метода1 в метод2, браузер то открывается, то закрывается, на что тратится время (то, что мне нужно, сейчас занимает 1 час 45 минут)

Можно ли как то сделать так, чтоб браузер 1 раз открылся, и закрылся уже тогда, как весь код в файле будет выполнен (засунуть driver.quit() в конец файла к примеру с применением какой то хитрости, типа так)
    driver = webdriver.Firefox()
    def method2(self, info1, info2):
        # la-la-la
    driver.quit()
или может кто-то подскажет правильней путь?

Едит:
Можно конечно и просто так сделать,
    driver = webdriver.Firefox()
    def method2(self, info1, info2):
        # la-la-la
т.е. убрать driver.quit() вовсе и закрывать в конце браузер руками, но это не интересно
Спасибо.

Отредактировано TitanFighter (Окт. 25, 2015 03:53:56)

Офлайн

#2 Окт. 25, 2015 06:25:43

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер

Ну так создавайте ваш драйвер в ините. В чем проблема ?

Офлайн

#3 Окт. 25, 2015 15:07:39

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер

Вы имеет ввиду так?

class Test:
    def __init__(self):
        driver = webdriver.Firefox()
        self.method1()
        driver.quit()
    def method1(self):
        # bla-bla-bla
        self.method2(info1, info2)
    def method2(self, info1, info2):
        driver.get('http://google.com')
        # la-la-la
Как к нему обратиться из method2?

Пока сделал так:
class MyClass:
    def __init___(self):
        self.open_browser()
        self.method1()
        self.close_browser()
    def open_browser(self):
        global driver
        driver = webdriver.Firefox()
    def method1(self):
        # bla-bla-bla
        self.method2(info1, info2)
    def method2(self, info1, info2):
        driver.get('http://google.com')
        # la-la-la
    def close_browser(self):
        driver.quit()
Но буду благодарен, если покажете, как сделать вариант, когда драйвер запускается непосредственно с инит и как к нему обратиться.

Отредактировано TitanFighter (Окт. 25, 2015 15:09:52)

Офлайн

#4 Окт. 25, 2015 15:17:30

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер

class Test:
    def __init__(self):
        self.driver = webdriver.Firefox()
    def __del__(self):
        self.driver.quit()
    def method1(self):
        # bla-bla-bla
        self.method2(info1, info2)
    def method2(self, info1, info2):
        self.driver.get('http://google.com')
        # la-la-la



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

  • Начало
  • » Python для новичков
  • » Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version