브라우저 창을 처리하기 위한 Python 및 Selenium의 코드 예제

不言
풀어 주다: 2018-10-27 16:15:26
앞으로
5345명이 탐색했습니다.

이 기사는 Python 및 Selenium 처리 브라우저 창에 대한 코드 예제를 제공합니다. 필요한 친구가 참고할 수 있기를 바랍니다.

저번에 브라우저 팝업 상자 처리에 대해 언급했는데, 어떤 이유로든 브라우저 창이 트리거되어 브라우저가 새 창을 열게 됩니다. 새 창을 찾는 것은 팝업 상자를 찾는 것과 유사합니다. 창을 작동하려면 먼저 해당 창으로 전환해야 합니다.

브라우저 창 관련 API

Name Usage
switch_to.window(window_handle) 스위치 창
current_window_handle 현재 창 핸들
window_handles 모든 창 handler
close() 현재 창 닫기
quit() 브라우저 닫기

window_handle은 이 핸들을 통해 일반적으로 창 핸들이라고 불리는 브라우저 창의 고유 식별자입니다. 그래야만 창을 자유롭게 전환할 수 있습니다. close()와 quit()도 함께 나열되어 창을 닫는 것과 브라우저를 닫는 것의 차이점을 강조합니다.

Example

바이두 홈페이지를 직접 예로 들어보겠습니다. 바이두 홈페이지 하단의 '베이징공공망보안...'을 클릭하여 새 창을 열고, 새 창을 닫은 후 바이두 홈페이지로 돌아갑니다.

두 가지 작은 테스트를 수행합니다.

  • 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿