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

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

  • автор:

Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?

Author24 — интернет-сервис помощи студентам

Всем доброго дня. Подскажите, пожалуйста, как в python+selenium webdriver открыть новую вкладку в уже открытом браузере Google Chrome? Либо чтобы новая вкладка открывалась с определенным профилем?
Объясню суть. Я авторизовался на одном из сайтов. При запуске python открывает новую вкладку в повторно запущеном браузере, где я соответственно не авторизован. Как можно решить эту проблему?
Мой код на данный момент выглядит так:

1 2 3 4 5 6 7 8 9 10 11 12 13
# -*- coding: utf-8 -*- import undetected_chromedriver from selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.chrome.options import Options import csv import time user_link = input('Пример - https://site.ru/' 'Введите ссылку на страницу: ').strip() file_name = input('Введите название файла для сохранения: ').strip() options = Options() options.headless = False driver = undetected_chromedriver.Chrome(options=options)

Буду очень благодарен за любую помощь. Прошу не кидаться в меня камнями, я начинающий в этом деле и плохо разбираюсь. Зранее всем благодарен за ответы.
Версия Python 3.9.1
Версия Google Chrome 109.0.5414.168

Как в python+selenium webdriver открыть новую вкладку в уже открытом браузере?

Всем привет! Есть потребность: пройти авторизацию вручную на сайте, а уже через webdriver открыть новую вкладку в этом же браузере и продолжить работу с сайтом уже авторизованным. гугл не дал ответа, есть такая возможность? По коду

from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("https://google.ru/") 

открывается хром в новой сессии, не авторизованный на нужном сайте (google.ru)
Отслеживать
77.2k 6 6 золотых знаков 58 58 серебряных знаков 126 126 бронзовых знаков
задан 21 апр 2018 в 11:00
951 2 2 золотых знака 23 23 серебряных знака 43 43 бронзовых знака
Так вроде нельзя, вам нужно придумать алгоритм авторизации именно через selenium+webdriver
– user250150
21 апр 2018 в 11:37

вместо того чтобы пытаться подключиться к уже запущенному браузеру, можно существующий профиль использовать (Profile path на chrome://version/ ) или явно заходить.

21 апр 2018 в 12:06

@danilshik авторизация через вебдрайвер не проблема, но открытие новой вкладки в существующем браузере упростило бы саму работу скрипта

21 апр 2018 в 12:42
@jfs сейчас попробую, если буду использовать данные своего профиля, то и куки он тоже подхватит?
21 апр 2018 в 12:44
получилось по существующему профилю, спасибо!
21 апр 2018 в 18:32

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

В, соответствии, с ответом, нужно передавать аргумент user-data-dir , в котором будет путь до папки с профилем.

Путь до папки профиля, можно узнать из вкладки с адресом chrome://version/

from selenium import webdriver FILE_NAME_PROFILE = r'C:\Users\pc\AppData\Local\Google\Chrome\User Data' options = webdriver.ChromeOptions() options.add_argument("user-data-dir=" + FILE_NAME_PROFILE) w = webdriver.Chrome(executable_path="C:\\Users\\chromedriver.exe", chrome_options=options) 

How to click on a link using Selenium webdriver in Python.

Trending Articles on Technical and Non Technical topics

We can click on a link using Selenium webdriver in Python. A link is represented by the anchor tag. A link can be identified with the help of the locators like — link text and partial link text.

We can use the link text attribute for an element for its identification and utilize the method find_element_by_link_text. With this, the first element with the matching value of the given link text is returned.

driver.find_element_by_link_text("value of link text")

We can also use the partial link text attribute for an element for its identification and utilize the method find_element_by_partial_link_text. With this, the first element with the matching value of the given partial link text is returned.

For both the locators, if there is no element with the matching value of the partial link text/link text, NoSuchElementException shall be thrown.

driver.find_element_by_partial_link_text("value of partial ink text")

Let us see the html code of a webelement −

The link highlighted in the above image has a tagname — a and the partial link text — Refund. Let us try to click on this link after identifying it.

Example

from selenium import webdriver driver = webdriver.Chrome(executable_path='../drivers/chromedriver') #url launch driver.get("https://www.tutorialspoint.com/about/about_careers.htm") #identify link with partial link text l = driver.find_element_by_partial_link_text('Refund') #perform click l.click() print('Page navigated after click: ' + driver.title) #driver quit driver.quit()

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

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

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

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

Решения вопроса 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()

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

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

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