리모트 디버깅 포트 사용중인 크롬 브라우저 여부 확인 방법
2024. 1. 31. 14:06ㆍIT관련
반응형
Selenium으로 자동화 하는 작업중 특정 remote debugging port로 실행된 브라우저 여부를 확인할 필요가 생겼다.하지만 실행된 브라우저를 찾을 방법이 딱히 떠오르지 않아서 매번 브라우저를 실행하고는 그 포트로 연결해서 작업후 창을 정리하도록 했다. 그랬더니 매번 불필요하게 빈 브라우저가 보였다가 사라지게 되었다.
방법을 고민하던 차에 netstat 명령어가 생각이 나서 문제를 해결할 수 있었다.
netstat는 컴퓨터의 네트워크 및 포트에 대한 상태를 확인할 수 있는 명령어다.
Remote debugging port로 9222를 지정했는데, 이 포트가 열려 있다면 크롬 브라우저가 실행되어 있는거고 없다면 브라우저를 실행시키면 된다.
netstat로 9222 포트가 열려 있는지 확인하는 명령어는 다음과 같다.
Powershell
PS c:\> netstat -ano | findstr "127.0.0.1:9222" | findstr "LISTENING"
TCP 127.0.0.1:9222 0.0.0.0:0 LISTENING
MS DOS
c:\> netstat -ano | find "127.0.0.1:9222" | find "LISTENING"
TCP 127.0.0.1:9222 0.0.0.0:0 LISTENING
위와 같이 응답이 온다면 9222 포트로 실행된 크롬이 있다고 보면 된다.
코드로 작성하면 다음과 같다.
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
PORT = 9222
PROFILE = r'C:\remote-profile'
if __name__ == "__main__":
cmd = f'netstat -ano | findstr 127.0.0.1:{PORT} | findstr LISTENING'
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
out, err = proc.communicate()
# out 정보가 없다는건 9222 포트를 사용중인 프로그램이 없다는 뜻.
if len(out) <= 0:
cmd = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
cmd += f' --user-data-dir={PROFILE} --remote-debugging-port={PORT}'
subprocess.Popen(cmd) # 크롬 실행
# 크롬 드라이버 생성
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('debuggerAddress', f'127.0.0.1:{PORT}')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),
options=chrome_options)
driver.get('https://www.naver.com') # 네이버로 이동
반응형
'IT관련' 카테고리의 다른 글
안드로이드에서 AT 명령어 보내기 (0) | 2024.02.19 |
---|---|
Python 채팅 프로그램 (0) | 2024.02.01 |
Selenium chrome 실행시 "Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다." 자동화 메시지 제거 (0) | 2024.01.26 |
Requests --> Selenium 세션 쿠키 유지 (0) | 2024.01.26 |
Selenium 프로필 적용 및 창 제어 (0) | 2024.01.24 |