Selenium не откроет новый URL-адрес на новой вкладке (Python & Chrome)

Я хочу открыть несколько URL-адресов на разных вкладках, используя Selenium WebDriver & Python.

Я не уверен, что происходит не так:

driver = webdriver.Chrome() driver.get(url1) time.sleep(5) driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL+'t') url2 = 'https://www.google.com' driver.get(item2) 

Я искал учебники, и мне кажется, что этот код должен делать то, что я хочу. Что на самом деле происходит, браузер открывается, url1 открывается, как и следовало ожидать, новая вкладка открывается, как и следовало ожидать, но url2 затем загружается в исходную вкладку вместо новой (хотя новая вкладка является активной).

(Я использую Chrome, потому что при использовании Firefox я не могу заставить его загружать любые URL-адреса вообще. Firefox открывается, но не получает запрашиваемый URL-адрес. Я попытался найти решение для этого, но безрезультатно).

Есть ли что-нибудь, что я могу изменить в своем коде, чтобы открыть новый URL на новой вкладке?

Спасибо за вашу помощь!

3 Solutions collect form web for “Selenium не откроет новый URL-адрес на новой вкладке (Python & Chrome)”

В ChromeDriver есть ошибка, которая предотвращает работу ctrl / command + T:

  • Я не могу открыть новую вкладку в ChromeDriver

В качестве обходного пути вы можете открыть ссылку на новой вкладке, а затем перейти в новое окно с помощью switch_to.window() . Рабочий образец:

 from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("https://www.google.com") # open a link in a new window actions = ActionChains(driver) about = driver.find_element_by_link_text('About') actions.key_down(Keys.CONTROL).click(about).key_up(Keys.CONTROL).perform() driver.switch_to.window(driver.window_handles[-1]) driver.get("https://stackoverflow.com") 

Теперь последний driver.get() будет выполнен на вновь открытой вкладке.

Вот простой способ, независимый от платформы:

Код:

 driver.execute_script("window.open('http://google.com', 'new_window')") 

Переход на исходную вкладку:

Код:

 driver.switch_to_window(driver.window_handles[0]) 

Проверка текущего заголовка, чтобы убедиться, что вы находитесь на правой странице:

Код:

 driver.title 

Для всего остального, получайте удовольствие!

Альтернативный способ открыть новое окно – использовать JavaScript и обработчик окна для переключения между ними.

 driver = webdriver.Chrome() # Open a new window # This does not change focus to the new window for the driver. driver.execute_script("window.open('');") # Switch to the new window driver.switch_to.window(driver.window_handles[1]) driver.get("http://stackoverflow.com") # close the active tab driver.close() # Switch back to the first tab driver.switch_to.window(driver.window_handles[0]) driver.get("http://google.se") # Close the only tab, will also close the browser. driver.close() 

Если вы посмотрите на свой браузер во время выполнения, это будет выглядеть так, как в новом окне есть фокус, но для webdriver это не так. Не обманывайтесь визуальным. Также не забудьте выбрать новый обработчик окна при закрытии вкладки, поскольку он установит driver.current_window_handle в

 selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed from unknown error: web view not found (Session info: chrome=<Your version of chrome>) (Driver info: chromedriver=<Your chrome driver version> (<string of numbers>),platform=<Your OS>) 

на .close() и он выкинет эту ошибку, если вы попытаетесь сделать что-то с драйвером на этом этапе.

  • Python - Selenium - Как использовать ярлыки браузера
  • Ошибка selexbox при проверке на селене
  • Получение текущего URL тега видео с селеном
  • Selenium: попытка входа в систему с файлами cookie - «Может устанавливать только файлы cookie для текущего домена»
  • Как сократить длинные выражения XPath со многими альтернативами OR?
  • Selenium's firefox webdriver работает на одном компьютере, но не в другом
  • Может ли JavaScript поговорить с Selenium 2?
  • InvalidElementStateException при запуске Selenium Webdriver с PhantomJS
  • Python - лучший язык программирования в мире.