이 기사는 Python 및 Selenium 처리 브라우저 창에 대한 코드 예제를 제공합니다. 필요한 친구가 참고할 수 있기를 바랍니다.
저번에 브라우저 팝업 상자 처리에 대해 언급했는데, 어떤 이유로든 브라우저 창이 트리거되어 브라우저가 새 창을 열게 됩니다. 새 창을 찾는 것은 팝업 상자를 찾는 것과 유사합니다. 창을 작동하려면 먼저 해당 창으로 전환해야 합니다.
Name | Usage |
---|---|
switch_to.window(window_handle) | 스위치 창 |
current_window_handle | 현재 창 핸들 |
window_handles | 모든 창 handler |
close() | 현재 창 닫기 |
quit() | 브라우저 닫기 |
window_handle은 이 핸들을 통해 일반적으로 창 핸들이라고 불리는 브라우저 창의 고유 식별자입니다. 그래야만 창을 자유롭게 전환할 수 있습니다. close()와 quit()도 함께 나열되어 창을 닫는 것과 브라우저를 닫는 것의 차이점을 강조합니다.
바이두 홈페이지를 직접 예로 들어보겠습니다. 바이두 홈페이지 하단의 '베이징공공망보안...'을 클릭하여 새 창을 열고, 새 창을 닫은 후 바이두 홈페이지로 돌아갑니다.
두 가지 작은 테스트를 수행합니다.
Baidu 홈페이지를 열고 먼저 현재 창 핸들을 가져오고 새 창을 열고 창 핸들을 다시 가져오고 두 인수의 결과를 인쇄합니다.
새 창을 닫으면 브라우저가 자동으로 원래 바이두 홈페이지로 전환됩니다. 이때, 바이두 홈페이지를 운영하세요
프로그램 중단을 방지하기 위해 필요한 경우 try/Exception/finally를 사용하세요. 코드와 결과를 살펴보겠습니다.
# coding = utf-8 from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get('https://www.baidu.com') first_window_handle = driver.current_window_handle #获取当前(百度首页)的窗口句柄 print('now handle is : ',first_window_handle) #打印百度首页窗口句柄 driver.find_element_by_id('jgwab').click() #点击打开新窗口 second_window_handle = driver.current_window_handle #再获取一次窗口句柄并打印 print('and now handle is : ', second_window_handle) all_handles = driver.window_handles #获取所有窗口句柄 sleep(2) for window in all_handles: if window != first_window_handle: print('and and now handle is : ', window) driver.switch_to.window(window) #切换到非百度首页的窗口 driver.close() #关闭该窗口 sleep(2) try: driver.find_element_by_id('kw').send_keys('test') #关闭窗口后操作百度首页元素 driver.find_element_by_id('su').click() except Exception as msg: print('error: ', msg) #如果有错误,打印错误信息 finally: driver.switch_to.window(first_window_handle) #切换到百度首页后再操作 driver.find_element_by_id('kw').send_keys('try again') driver.find_element_by_id('su').click() sleep(2) driver.quit()
실행 결과를 살펴보겠습니다.
now handle is : CDwindow-6CF04CE58FCA5EA42EC453509FFDF773 and now handle is : CDwindow-6CF04CE58FCA5EA42EC453509FFDF773 and and now handle is : CDwindow-C6EDDF33CAA9BC9330585B2DCB8A664B error: Message: no such window: target window already closed from unknown error: web view not found (Session info: chrome=69.0.3497.92) (Driver info: chromedriver=...
지금 테스트를 다시 살펴보면 다음과 같습니다. 1. 새 창을 열어도 얻은 창 핸들은 여전히 Baidu 홈페이지의 핸들입니다(두 개 인쇄된 핸들은 동일합니다). 2. 새 창을 닫으면 브라우저는 기본적으로 바이두 홈페이지를 표시하지만 바이두 홈페이지를 실행할 수 없습니다. 대신 창이 없으며 대상 창이 닫혔습니다. 홈페이지의 요소를 작동하려면 먼저 프로그램에서 Baidu 홈페이지로 다시 전환해야 합니다("테스트"는 검색되지 않았지만 "다시 테스트"는 검색되었습니다).
표시되는 내용이 반드시 사실은 아닙니다. 스크립트가 처음에 브라우저를 열 때 표시되는 창을 제외하고, 이후에 일련의 작업(예: 창 열기/닫기)을 통해 표시되는 창은 그럴 수 있다는 의미는 아닙니다. 직접 운영됩니다. 각 창 요소의 위치를 지정하기 전에 먼저 switch_to.window()를 사용하여 전환해야 합니다. 드라이버는 자체적으로 점프하지 않습니다.
위 내용은 브라우저 창을 처리하기 위한 Python 및 Selenium의 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!