Как начать новую сессию веб-драйвера (driver.start_session), поддерживающую "режим без головы" активным в Selenium с python? - PullRequest
0 голосов
/ 21 марта 2019

У меня проблема: я создал собственный класс для первой инициализации моего веб-драйвера.Он включает в себя несколько методов, и я повторно использовал этот скрипт в новом программном обеспечении.Однако в этом приложении мне нужно перезапустить веб-драйвер после команды driver.quit.Я могу перезагрузить нужные мне возможности вместе с профилем Firefox, который я уже использовал;но я не могу установить параметры снова: мой веб-драйвер открывает нежелательное окно.

# here my selenium control class which starts in headless mode if global variable "headless" is set to true
headless = True
class SeleniumCtrl:
    options = Options()
    options.add_argument('-headless')
    cap = DesiredCapabilities().FIREFOX
    cap["marionette"] = True
    cap['loggingPrefs'] = {'browser': 'ALL'}
    # other lines which the profile is set in....

    if headless:
        browser = webdriver.Firefox(profile, capabilities=cap, firefox_options=options, executable_path="/my path/geckodriver")
    else:
        browser = webdriver.Firefox(profile, capabilities=cap, executable_path="/my path/geckodriver")


# here my call to initialize the driver control and also the driver itself, ready to use
driver_ctrl = SeleniumCtr() #my custom class
driver_plain = driver-ctrl.browser

# here my function to reset the web driver session
def reset_session:
    # here some line to set the profile and the capabilities
    cap = DesiredCapabilities().FIREFOX
    cap["marionette"] = True
    cap['loggingPrefs'] = {'browser': 'ALL'}

    driver_plain.firefox_profile.set_preference(pref, val)
    current_url = driver_plain.current_url
    driver_plain.close()
    driver_plain.start_session(cap, profile) # here I should be able to set the "headless" opt again, but I don't know how

Конечно, я могу переписать код класса SeleniumCtrl, чтобы иметь возможность повторно инициализировать веб-драйвер, создавая новый объектОднако я бы хотел этого избежать, если это разумно.

Заранее спасибо

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