/
Вопросы и ответы
/
Тестирование
/

Selenium python как не закрывать браузер

Selenium python как не закрывать браузер

4 года назад

Nikolai Gagarinov

Ответы

2

Для того чтобы не закрывать браузер после выполнения тестов на Selenium WebDriver с помощью Python, можно воспользоваться методом driver.quit(). Этот метод закрывает все окна и завершает сеанс WebDriver, однако, если вы не хотите закрывать браузер после выполнения тестов, вместо этого можно воспользоваться методом driver.close(). Этот метод закрывает только текущее окно браузера, но продолжает работу сеанса WebDriver.

Таким образом, чтобы не закрывать браузер после выполнения тестов, можно использовать метод driver.close() вместо driver.quit(). Также, можно установить флаг detach=True при создании драйвера, чтобы предотвратить автоматическое закрытие браузера после выполнения тестов:

1
2
3
4
5
6
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option(""detach"", True)

driver = webdriver.Chrome(options=options)

Таким образом, браузер останется открытым после выполнения тестов, и вы сможете продолжать работу с ним вручную

2 года назад

Maksim Litvinov

0

Chrome закрывается, когда скрипт на Selenium заканчивает работу: вместе с программой завершается и драйвер. Чтобы окно осталось открытым, передайте опцию detach:

1
2
3
4
5
6
7
8
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=options)
driver.get("https://ru.hexlet.io")
# скрипт завершится, браузер останется открытым

И уберите из кода driver.quit() и driver.close():

  • driver.close() закрывает текущую вкладку;
  • driver.quit() закрывает все окна и завершает сессию.

Опция detach работает в Chrome и Edge. В Edge используйте webdriver.EdgeOptions().

Firefox и другие браузеры

У Firefox такой опции нет. Задержите завершение скрипта:

1
2
input("Нажмите Enter, чтобы закрыть браузер...")
driver.quit()

Подключиться к уже открытому Chrome

Удобно при отладке: вы вручную логинитесь на сайте, а скрипт продолжает работу в том же окне. Запустите Chrome с портом отладки:

1
chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug

И подключитесь к нему:

1
2
3
options = webdriver.ChromeOptions()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=options)

На Windows путь к браузеру обычно "C:\Program Files\Google\Chrome\Application\chrome.exe".

В тестах браузер лучше закрывать

В автотестах на pytest оставлять браузер открытым не стоит: процессы копятся и съедают память. Закрывайте его в фикстуре, а для отладки ставьте точку останова:

1
2
3
4
5
6
7
import pytest

@pytest.fixture
def driver():
    driver = webdriver.Chrome()
    yield driver
    driver.quit()

Запуск pytest --pdb остановит тест на ошибке, и браузер останется открытым, пока вы смотрите на страницу.

Автотесты на Selenium и pytest разбирают в курсе «Selenium на Python».

24 дня назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845