Проблема возникает, когда у меня уже запущен экземпляр 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()
Кроме того, я думал, что вынесение кода в отдельный процесс будет работать, но все равно нет
Подробнее здесь: https://stackoverflow.com/questions/790 ... te-debuggi