python selenium driver.quit() не может выйти из браузера Firefox, если установлен firefox_profile

Эта проблема меня очень смутила. Я использую python selenium для автоматической работы. После проделанной работы мне нужно закрыть браузер (я должен использовать firefox). И я знаю, что driver.close() закроет текущее окно, а driver.quit() закроет все окна и выйдет из браузера. Проблема в том, что у меня это не работает, если я использую python file.py для запуска своего кода, но работает, если я устанавливаю драйвер в консоли python, здесь не работает, это просто закрыть мой URL, но браузер firefox не выходит. Все вышеперечисленные тесты установили firefox_profile. Более того, я обнаружил, что если я не устанавливаю firefox_profile, первый способ запуска моего кода также работает. Я думаю, может быть, это ошибка для firefox_profile. Желаю кому-нибудь спасти мой день. Мой код такой же, как:

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)  # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', download_dir)
profile.set_preference(
    'browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream')
driver = webdriver.Firefox(
    executable_path=gecko_dir, firefox_profile=profile)
driver.get(someurl)
driver.quit()# which will close my session, my url, my current window but not exit browser

версии, которые я использую:

  • питон 3.5.3
  • селен 3.4.3
  • фаерфокс 55.0.1
  • геккодивер 0.18.0

person chenkh    schedule 16.08.2017    source источник
comment
Что именно вы подразумеваете под just close my url, but the firefox browser not exit? Закрывается ли браузер Firefox и экземпляр WebDriver корректно?   -  person DebanjanB    schedule 16.08.2017
comment
после выполнения driver.quit() мой браузер не может выйти, он все еще держит одно окно, которое является пустым окном - новая вкладка без других вещей. Это ясно?   -  person chenkh    schedule 16.08.2017
comment
Окна браузера, инициированные экземпляром веб-драйвера, обязательно будут закрыты (убиты) после того, как вы вызовете driver.quit(). Таким образом, blank window может быть результатом взаимодействия некоторых других пользователей. Вы используете Selenium 3.5.0 с последней версией GeckoDriver v.0.18.0 и Mozilla Firefox 53.0?   -  person DebanjanB    schedule 16.08.2017
comment
как я только что дополнил, моя версия селена 3.4.3, а также geckodriver и firefox являются последней версией. Никаких других взаимодействий. Проблема все еще существует   -  person chenkh    schedule 16.08.2017
comment
Можете ли вы закрыть все свои приложения, перезагрузить систему и просто выполнить свой скрипт?   -  person DebanjanB    schedule 16.08.2017
comment
О, черт, я тупой. Есть действительно некоторые другие взаимодействия, которые я нашел. Там другой драйвер открыт. большое спасибо   -  person chenkh    schedule 16.08.2017
comment
ок ок, я приму это.   -  person chenkh    schedule 16.08.2017


Ответы (1)


Пока мы работаем с Selenium 3.5.0 с последними GeckoDriver v.0.18.0 и Mozilla Firefox 53.0, окна браузера, инициированные экземпляром WebDriver, неизбежно будут уничтожены (убиты) после того, как вы вызовете quit() в экземпляре WebDriver.

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

Рекомендация:

Вы можете рассмотреть следующие шаги, чтобы начать чистое выполнение теста:

  1. Запустите инструмент CCleaner, чтобы стереть все, что осталось от ваших предыдущих исполнений.
  2. Перезагрузите систему, чтобы запустить Test Execution в чистой ОС.
  3. Держите Test Environment изолированным от других User Interactions.
person DebanjanB    schedule 16.08.2017