Освоение переключения вкладок в Selenium: подробное руководство

Добро пожаловать в наше подробное руководство о том, как переключиться на новую вкладку с помощью Selenium! Независимо от того, являетесь ли вы опытным специалистом по веб-автоматизации или только начинаете работать с Selenium, понимание методов переключения вкладок необходимо для эффективного взаимодействия с несколькими вкладками браузера. В этой статье мы рассмотрим различные методы переключения вкладок с помощью Selenium в Python, попутно предоставляя разговорные объяснения и примеры кода.

Метод 1: использование дескрипторов окон
Один из наиболее распространенных способов переключения вкладок в Selenium — использование дескрипторов окон. Дескриптор окна — это уникальный идентификатор, присваиваемый каждому окну или вкладке браузера. Вот пример того, как переключиться на новую вкладку с помощью маркеров окна:

# Get the current window handle
current_handle = driver.current_window_handle
# Open a new tab
driver.execute_script("window.open('about:blank','_blank');")
# Switch to the new tab
for handle in driver.window_handles:
    if handle != current_handle:
        driver.switch_to.window(handle)
        break

Метод 2: использование индекса окна
Другой метод переключения вкладок — использование индекса окна. Этот метод предполагает, что вы знаете порядок открытия вкладок. Вот пример:

# Open a new tab
driver.execute_script("window.open('about:blank','_blank');")
# Switch to the new tab by index
driver.switch_to.window(driver.window_handles[1])

Метод 3: использование щелчка по ссылке
Иногда переключение на новую вкладку может быть вызвано нажатием ссылки или кнопки. Вот пример:

# Find the link element
link_element = driver.find_element_by_link_text("Click Here")
# Open the link in a new tab
link_element.send_keys(Keys.CONTROL + Keys.RETURN)
# Switch to the new tab
driver.switch_to.window(driver.window_handles[1])
# Open a new tab
driver.execute_script("window.open('https://example.com','_blank');")
# Switch to the new tab by title
driver.switch_to.window(driver.window_handles[-1])
driver.wait.until(EC.title_contains("Example Domain"))