Проблема с привязкой Selenium WebDriver к существующему экземпляру Chrome с портом удаленной отладкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с привязкой Selenium WebDriver к существующему экземпляру Chrome с портом удаленной отладки

Сообщение Anonymous »

Я пытаюсь открыть браузер Selenium с определенным профилем Chrome.
Проблема возникает, когда у меня уже запущен экземпляр Chrome. Если я запускаю свой код, когда Chrome открыт, он запускает только новый браузер (с использованием Popen), но не привязывается к Selenium WebDriver и не переходит по URL-адресу. Однако когда я уничтожаю все экземпляры Chrome и перезапускаю код, Popen открывает браузер с указанным портом отладки, успешно привязывается к Selenium WebDriver и переходит по ссылке.
Я не уверен, правильно ли я это сделал. Я неправильно понимаю, как Selenium работает с удаленной отладкой, или что-то не так в моем коде. Будем признательны за любую информацию!
Это код:

Код: Выделить всё

import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import socket
import time

def find_free_port():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(('', 0))
return s.getsockname()[1]

def openBrowser():
# ChromeDriver path
driver_path = "DrivrePath"

# Find a free port for remote debugging
RDP = find_free_port()

# Start a new Chrome instance with remote debugging
proc = subprocess.Popen(
["C:/Program Files/Google/Chrome/Application/chrome.exe",
f"--remote-debugging-port={RDP}",
"--user-data-dir=./chrome_profile_new"],
shell=False
)
# Wait for Chrome to start
time.sleep(2)

# Set up Chrome options
options = Options()
options.add_argument("--start-maximized")
options.add_experimental_option("debuggerAddress", f"localhost:{RDP}")

# Set up the ChromeDriver service
service = Service(executable_path=driver_path)

# Create a new Chrome driver instance
driver = webdriver.Chrome(service=service, options=options)

# Navigate to the desired URL
driver.get("https://www.google.com")

return driver, proc

if __name__ == "__main__":
from multiprocessing import Process

p = Process(target=openBrowser)
p.start()
p.join()

Я попытался указать каталог пользовательских данных для своего профиля, но, похоже, это не сработало. Теперь я пытаюсь использовать Chrome с портом удаленной отладки.
Кроме того, я думал, что вынесение кода в отдельный процесс будет работать, но все равно нет

Подробнее здесь: https://stackoverflow.com/questions/790 ... te-debuggi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»