이미 실행 중인 웹 브라우저를 셀레늄과 파이썬으로 제어하기
이미 실행 중인 브라우저 제어 가능성
이미 실행되어 있는 웹 브라우저를 셀레늄과 파이썬으로 지정하여 제어하는 것은 가능합니다. 이 방법은 새로운 브라우저 인스턴스를 생성하는 대신 이미 열려 있는 브라우저에 연결하여 자동화 작업을 수행할 수 있게 해줍니다. 이 기능은 특히 로그인 상태를 유지하거나 이미 설정된 브라우저 환경에서 작업해야 할 때 유용합니다.
디버그 모드로 브라우저 실행하기
이미 실행 중인 브라우저를 제어하기 위해서는 먼저 브라우저를 디버그 모드로 실행해야 합니다. 크롬 브라우저의 경우 다음과 같은 방법으로 디버그 모드를 활성화할 수 있습니다:
명령 프롬프트(CMD)를 열고 다음 명령어를 실행합니다:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -remote-debugging-port=9014 --user-data-dir="C:\test\Chrome_Test_Profile"
이 명령어에서:
-remote-debugging-port=9014
: 디버깅을 위한 포트 번호를 지정합니다.--user-data-dir="C:\test\Chrome_Test_Profile"
: 브라우저 프로필 데이터를 저장할 디렉토리를 지정합니다.
크롬 실행 경로는 시스템에 따라 다를 수 있으므로 실제 크롬이 설치된 경로로 조정해야 합니다.
파이썬 코드로 연결하기
디버그 모드로 브라우저가 실행되면, 파이썬 코드에서 다음과 같이 연결할 수 있습니다:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('debuggerAddress', 'localhost:9014')
driver = webdriver.Chrome(options=options)
# 이제 driver를 사용하여 브라우저를 제어할 수 있습니다
# 예: 버튼 클릭
try:
button = driver.find_element_by_class_name('button')
button.click()
finally:
driver.quit() # 연결 종료 (브라우저는 닫히지 않음)
이 코드는 이미 실행 중인 브라우저에 연결하여 제어할 수 있게 해줍니다. 주의할 점은 driver.quit()
을 호출해도 브라우저 창은 닫히지 않고 연결만 종료된다는 것입니다.
다른 방법: Remote 클래스 사용하기
또 다른 방법으로는 webdriver.Remote()
클래스를 사용하여 원격으로 브라우저를 제어할 수 있습니다:
from selenium.webdriver import Remote
url = 'http://localhost:9222' # 디버깅 포트 URL
options = Remote.webdriver.ChromeOptions()
options.add_experimental_option('debuggerAddress', 'localhost:9222')
driver = Remote(command_executor=url, options=options)
# 브라우저 제어 예시
search_box = driver.find_element_by_name('q')
search_box.send_keys('셀레늄')
search_box.submit()
창 전환 방법
이미 실행 중인 브라우저에 여러 탭이나 창이 열려 있는 경우, 다음과 같이 창 간 전환이 가능합니다:
# 현재 창의 핸들을 저장
main_window = driver.current_window_handle
# 새 창 열기
driver.execute_script("window.open('https://www.google.com');")
# 새로 열린 창으로 전환
for handle in driver.window_handles:
if handle != main_window:
driver.switch_to.window(handle)
break
# 새 창에서 동작 수행
# ...
# 새 창 닫기
driver.close()
# 메인 창으로 전환
driver.switch_to.window(main_window)
주의사항 및 제한사항
이미 실행 중인 브라우저를 제어할 때 몇 가지 주의해야 할 점이 있습니다:
브라우저 버전과 드라이버 버전의 호환성: 사용 중인 크롬 브라우저 버전과 ChromeDriver 버전이 호환되어야 합니다.
환경 변수 설정: 일부 경우에는 크롬 실행 파일 경로를 환경 변수 PATH에 추가해야 할 수 있습니다.
디버깅 포트 확인: 브라우저가 디버깅 모드로 제대로 실행되었는지 확인하려면, 일반 브라우저에서
http://127.0.0.1:9222
(또는 지정한 포트)에 접속하여 디버깅 페이지가 표시되는지 확인할 수 있습니다.보안 경고: 처음 실행 시 Windows 보안 경고가 표시될 수 있으며, '액세스 허용'을 선택해야 합니다.
이러한 방법을 통해 이미 실행 중인 웹 브라우저를 셀레늄과 파이썬으로 제어할 수 있으며, 새로운 브라우저 인스턴스를 생성하지 않고도 자동화 작업을 수행할 수 있습니다.


