Как открыть новую вкладку selenium python
Перейти к содержимому

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

  • автор:

Всё обо всём

Надо нажать на кнопку в текущем окне. Страница открывается в новой вкладке. Нужно в новой вкладке найти кнопку и нажать на нее.

1. Нажимаем на кнопку
2. Открывается новая вкладка
3. Переключаемся на новую вкладку
4. Нажимаем на кнопку в новой вкладке

def test_user_should_be_able_to_play_video(driver):
first_page.open(driver)
first_page.click_buton_on_first_page_and_switch_to_new_tab(driver)
new_page.click_button_on_new_page(driver)
(«Click button on first_page»)
def click_buton_on_first_page_and_switch_to_new_tab(driver)
first_page_button = Button(driver, (By.CSS_SELECTOR, first_page_button_locator))
first_page_button.click()
window_after = driver.window_handles[1]
driver.switch_to_window(window_after)

Возможно ли в Selenium открывать новую вкладку/окно?

Здравствуйте, работаю над парсером одного сайта, и по воле его создателей, моему парсеру нужно перенести информацию с одной страницы, на другую с минимальными потерями во времени, из-за чего вариант get() не подходит ибо он в той же вкладке переходит по новой ссылке. Моя цель пока парсер не начал работу, открыть сразу две вкладки/окна, и уже при работе между ними переключаться.

  • Вопрос задан более трёх лет назад
  • 11096 просмотров

Комментировать

Решения вопроса 1

Zarom

Самый простой вариант — создать новый инстанс браузера.
Другой вариант — выполнить

driver.execute_script("window.open('https://google.com')")

Сейчас натолкнулся ещё на такой вариант с использованием send_keys(Keys.CONTROL + ‘t’)

from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://stackoverflow.com/") body = driver.find_element_by_tag_name("body") body.send_keys(Keys.CONTROL + 't') driver.close()

Ответ написан более трёх лет назад

Как в Selenium открыть в новой вкладке ссылку, доступную по событию javascripta?

Здравствуйте. Подскажите, как с помощью Selenium открыть в новой вкладке страницу, переход на которую осуществляется с помощью javascripta по событию нажатия на элемент?
Задача в целом — для каждого элемента из некоторого набора на текущей странице сравнить некоторые параметры с параметрами, доступными при нажатии на соответствующий элемент из набора и переходе на новую страницу.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

[Selenium] Как открыть ссылку в новой вкладке?
Нужна помощь по селениуму. Прожка открывает сайтец в хроме и находит ссылки и кликает по ним по.

Selenium. Как открыть ссылку на новой вкладке браузера и перейти на эту вкладку?
Код открывает ссылку на новой вкладке Привожу фрагмент кода et =.

Как открыть ссылку в новой вкладке (dcef3)?
Пишу браузер на dcef3. Работает вроде неплохо. Но есть и одна проблема. Как принудительно открыть.

Как можно открыть ссылку в новой вкладке Webbrowser?
Привет всем! Вопрос — как можно открыть ссылку в новой вкладке. Есть Webbrowser.

Автоматизируй это!

Эксперт Python

7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29

Dancing_god, не понял. Просто клик по элементу разве это и не сделает?

Добавлено через 2 минуты
если сама верстка или атрибуты не содержат ссылку куда идет переход, то можно попробовать кликать с «нажатым» контролом, типа заставляя открыть в новой вкладке. Но если элементов много открывать их все в новых вкладках долго, я бы сначала посмотрел нельзя ли прямо на странице все получить что нужно.

Регистрация: 18.09.2015
Сообщений: 227

ЦитатаСообщение от Welemir1 Посмотреть сообщение

Просто клик по элементу разве это и не сделает?
Он откроет ссылку в текущей вкладке. В javascript просто меняется:

window.location.href = dialog_url;

при нажатии на элемент.
Конкретнее, у меня есть список диалогов пользователя. Когда пользователь нажимает на элемент, он переходит к странице диалога с соответствующим пользователем. Блоки (div) диалогов содержат ссылки на профиль собеседника. Такие же ссылки есть на страницах соответствующих диалогов. Надо сравнить для каждого диалога, что он ведет к диалогу именно с тем собеседником, ссылка на которого содержится в div данного диалога на странице всех диалогов пользователя.

Добавлено через 1 минуту

ЦитатаСообщение от Welemir1 Посмотреть сообщение

можно попробовать кликать с «нажатым» контролом

Это через ActionChains надо делать?

Добавлено через 3 минуты

ЦитатаСообщение от Welemir1 Посмотреть сообщение

элементов много
Это делается в целях тестирования, поэтому данных не много будет.
Автоматизируй это!

Эксперт Python

7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29

ЦитатаСообщение от Dancing_god Посмотреть сообщение

Это через ActionChains надо делать?

да, эмулировать Ctrl+клик

Добавлено через 38 секунд
но опять же у меня нет перед глазами самого приложения и задачи, может это и проще решается

Регистрация: 18.09.2015
Сообщений: 227

ЦитатаСообщение от Welemir1 Посмотреть сообщение

эмулировать Ctrl+клик

Такая комбинация большинством браузеров поддерживается? Когда в firefox делаю так вручную на нужном элементе, не работает. Открывает в той же вкладке.
Просто может быть проблема также в том, что я меняю в javascripte url для текущей вкладки.

Автоматизируй это!

Эксперт Python

7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29
Dancing_god, а вот это не знаю, надо покопать, думал что у всех.

Эксперт Python

5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

driver.execute_script('здесь придумай javascript который сделает то что тебе нужно')

примеры javascript :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
driver.execute_script("window.open('yandex.ru', 'tab2');") driver.execute_script("arguments[0].innerHTML=arguments[1];", elem,'новый текст этого div') driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") driver.execute_script("document.getElementById('g-recaptcha-response').style.removeProperty('display');") script =''' function new_tab(a, url)  document.body.appendChild(a); a.setAttribute('href', url); a.dispatchEvent( (function(e)  e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); return e; >(document.createEvent('MouseEvents')) ) ); > new_tab(document.createElement('a'), arguments[0]); ''' url = 'http://ya.ru' driver.execute_script(script,url)

Selenium. Как открыть ссылку на новой вкладке браузера и перейти на эт

Фотография

Как сделать, чтобы при открытии ссылки в новой вкладке программа ещё и переход и ла на эту вкладку?

#2 user12

Отправлено 03 ноября 2016 — 16:42

Никак, не работает Selenium со вкладками

Открывайте просто в новом окне.

//все хендлеры Set oldWindows = driver.getWindowHandles(); //тут клик на линку, которая открывает новое окно driver.findElement(xxxx).click(); //новый набор хендлеров Set newWindows = driver.getWindowHandles(); //удаляем из сета старый хендлер,т.е. остается только новый newWindows .removeAll(oldWindows);

PS это не весь код, конечно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *