Python

Как закрыть вкладку в Python: Selenium close(), quit() и переключение окон

Если вы управляете браузером через Selenium, текущую вкладку закрывает метод `close()`.

Ниже — разделы про close() и quit(): в чем разница, как открыть новую вкладку и как узнать список вкладок, чтобы быстро понять устройство материала, практические ограничения и типовые точки отказа.


Если вы управляете браузером через Selenium, текущую вкладку закрывает метод close()

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://example.com")

browser.close()

Но есть важная деталь: если это была единственная вкладка, окно браузера тоже закроется. Метод close() закрывает текущую вкладку, а не «одну из многих где-то там»

close() и quit(): в чем разница

close() закрывает текущую вкладку или окно

browser.close()

quit() закрывает весь браузер и завершает WebDriver-сессию

browser.quit()

Для новичка правило такое

  • хотите закрыть одну вкладку — close()
  • хотите закончить работу скрипта и закрыть браузер полностью — quit()

В конце автоматизации обычно используют quit(), чтобы не оставлять процессы Chrome

Как открыть новую вкладку

В новых версиях Selenium можно открыть вкладку так

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://example.com")

browser.switch_to.new_window("tab")
browser.get("https://www.python.org/")

input("Нажмите Enter")
browser.quit()

После new_window("tab") Selenium переключается на новую вкладку, и следующий get() открывает страницу уже там

Как узнать список вкладок

Selenium хранит вкладки и окна как handles — технические идентификаторы

print(browser.window_handles)
print(browser.current_window_handle)

window_handles — список всех вкладок и окон, которые видит Selenium

current_window_handle — текущая вкладка, с которой сейчас работает код

Как закрыть вторую вкладку и вернуться на первую

Пример полностью

from selenium import webdriver

browser = webdriver.Chrome()

browser.get("https://example.com")
first_tab = browser.current_window_handle

browser.switch_to.new_window("tab")
browser.get("https://www.python.org/")
second_tab = browser.current_window_handle

browser.close()
browser.switch_to.window(first_tab)

print(browser.title)
input("Нажмите Enter для выхода")
browser.quit()

Что здесь происходит

  • открыли первую страницу
  • запомнили первую вкладку
  • открыли новую вкладку
  • запомнили вторую вкладку
  • закрыли текущую вкладку через close()
  • переключились обратно на первую
  • в конце закрыли весь браузер через quit()

Если после close() не переключиться на живую вкладку, следующая команда Selenium может упасть, потому что текущая вкладка уже закрыта

Как открыть ссылку в новой вкладке

Если на странице есть ссылка, можно открыть новую вкладку через JavaScript

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://example.com")

browser.execute_script("window.open('https://www.python.org/', '_blank');")

handles = browser.window_handles
browser.switch_to.window(handles[-1])

print(browser.title)
input("Enter")
browser.quit()

handles[-1] берет последнюю открытую вкладку

Для учебной задачи это удобно. В серьезных тестах лучше сохранять handles явно, чтобы не запутаться

Как закрыть вкладку по номеру

Технически можно взять вкладку из списка

handles = browser.window_handles
browser.switch_to.window(handles[1])
browser.close()
browser.switch_to.window(handles[0])

Но номер вкладки — хрупкая вещь. Если порядок изменится, вы закроете не ту вкладку

Лучше сохранять handle сразу после открытия вкладки

new_tab = browser.current_window_handle

Частые ошибки

NoSuchWindowException

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

Решение: после close() переключитесь на другую вкладку

browser.switch_to.window(browser.window_handles[0])

Закрыл весь браузер вместо вкладки

Скорее всего, вы использовали quit() или закрыли единственную вкладку

Если нужна работа с несколькими вкладками, сначала откройте вторую вкладку и проверьте window_handles

Открыл новую вкладку, но Selenium работает со старой

Открыть вкладку мало. Нужно переключиться на нее

browser.switch_to.window(browser.window_handles[-1])

Мини-практика

Запустите такой код и посмотрите, как меняется количество вкладок

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://example.com")
print("После первой вкладки:", len(browser.window_handles))

browser.switch_to.new_window("tab")
browser.get("https://www.python.org/")
print("После второй вкладки:", len(browser.window_handles))

browser.close()
browser.switch_to.window(browser.window_handles[0])
print("После закрытия:", len(browser.window_handles))

input("Enter")
browser.quit()

Так вы увидите, что window_handles — это не абстракция, а реальный список вкладок, доступных Selenium

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x