Найти - Пользователи
Полная версия: Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер
Начало » Python для новичков » Есть класс, есть 2 метода, есть Селениум. Как правильно впихнуть Селениум, чтоб не открывался\закрывался несколько раз браузер
1
TitanFighter
Доброго времени суток.
Подскажите пожалуйста по такому вопросу:

Есть примерно такой код
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() вовсе и закрывать в конце браузер руками, но это не интересно
Спасибо.
ayb
Ну так создавайте ваш драйвер в ините. В чем проблема ?
TitanFighter
Вы имеет ввиду так?
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()
Но буду благодарен, если покажете, как сделать вариант, когда драйвер запускается непосредственно с инит и как к нему обратиться.
Rodegast
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB