Всё обо всём
Надо нажать на кнопку в текущем окне. Страница открывается в новой вкладке. Нужно в новой вкладке найти кнопку и нажать на нее.
1. Нажимаем на кнопку
2. Открывается новая вкладка
3. Переключаемся на новую вкладку
4. Нажимаем на кнопку в новой вкладке
Возможно ли в Selenium открывать новую вкладку/окно?
Здравствуйте, работаю над парсером одного сайта, и по воле его создателей, моему парсеру нужно перенести информацию с одной страницы, на другую с минимальными потерями во времени, из-за чего вариант get() не подходит ибо он в той же вкладке переходит по новой ссылке. Моя цель пока парсер не начал работу, открыть сразу две вкладки/окна, и уже при работе между ними переключаться.
- Вопрос задан более трёх лет назад
- 11096 просмотров
Комментировать
Решения вопроса 1
Самый простой вариант — создать новый инстанс браузера.
Другой вариант — выполнить
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.
Автоматизируй это!
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
элементов много
Это делается в целях тестирования, поэтому данных не много будет.
Автоматизируй это!
7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29
Сообщение от Dancing_god
Это через ActionChains надо делать?
да, эмулировать Ctrl+клик
Добавлено через 38 секунд
но опять же у меня нет перед глазами самого приложения и задачи, может это и проще решается
Регистрация: 18.09.2015
Сообщений: 227
Сообщение от Welemir1
эмулировать Ctrl+клик
Такая комбинация большинством браузеров поддерживается? Когда в firefox делаю так вручную на нужном элементе, не работает. Открывает в той же вкладке.
Просто может быть проблема также в том, что я меняю в javascripte url для текущей вкладки.
Автоматизируй это!
7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29
Dancing_god, а вот это не знаю, надо покопать, думал что у всех.
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 это не весь код, конечно