[python 인터넷] Python Selenium(셀레니움) 크롬창 활성 탭 변경하기

JCR 홈페이지에서 로그인을 한 뒤에 검색을 하면 새로운 탭이 켜지고 새로운 탭에 검색결과가 나타났다. 그래서 셀레니움을 통해 활성 탭을 변경하고 검색 내용을 수집할 수 있는 방법을 검색하여 찾아 보았다. 이전 포스팅에 이어서 수행 결과를 정리하였다.
 

1. 검색 자동화

 

먼저 위의 이미지와 같은 검색 창에서 검색 할 수 있도록 프로그램을 작성한다.

  1. 검색창에 검색 어 입력
  2. 검색어 입력시 하단에 나오는 버튼 클릭

이전 코드에 이어서(로그인 버튼 누르기 다음) 아래에 추가한 코드는 다음과 같다.

# 키워드 검색
input = 'Peer-to-Peer Networking and Applications'

# 검색창에 키워드 입력후 검색
search = driver.find_element_by_name('search-inputEl')
search.send_keys(input)

# 검색창 하단에 표시되는 버튼 클릭
driver.find_element_by_xpath('//*[@id="boundlist-1029-listEl"]/ul/li').click()
time.sleep(5) # 로딩 기다리기


 

2. 활성 탭 전환하기

위의 코드를 이용하여 검색창에 검색어를 입력하여 검색은 가능하다. 검색 결과가 새창에 나타나므로 새로 활성화 된 창으로 화면을 변경하여야 한다. 아래의 코드를 추가함 으로써 탭 전환이 가능하다.
 

먼저 아래의 명령어는 탭 목록들을 보여준다. 새로운 탭을 열고 로딩을 기다린뒤 윈도우 목록을 확인해보면 리스트에 두개의 항목이 들어있는 것을 볼 수 있다.

print(driver.window_handles)
  • 결과 : [‘CDwindow-5869F32E71D5DF1303F64200A76D021F’, ‘CDwindow-19FEAEAE68751A47C2CD0D9008B6BF4E’]
     

새롭게 열린 탭으로 변경하는 코드는 아래의 코드를 추가하면 된다.
 

# 최근 열린 탭으로 전환
driver.switch_to.window(driver.window_handles[-1])

# 로딩 기다리기
time.sleep(5)


 

만약에 새로 옮긴 탭을 닫고 다시 원래 창으로 돌아가고 싶다면 아래의 코드를 입력하면 된다.

# 현재 탭 닫기
driver.close()

# 맨 처음 탭으로 변경(0번 탭)
driver.switch_to.window(driver.window_handles[0])

# 로딩 기다리기
time.sleep(5)


 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

수정한 전체 코드는 아래와 같다.

from selenium import webdriver

options = webdriver.ChromeOptions()

# headless 옵션 설정
options.add_argument('headless')
options.add_argument("no-sandbox")

# 브라우저 윈도우 사이즈
options.add_argument('window-size=1920x1080')

# 사람처럼 보이게 하는 옵션들
options.add_argument("disable-gpu")   # 가속 사용 x
options.add_argument("lang=ko_KR")    # 가짜 플러그인 탑재
options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')  # user-agent 이름 설정

# 드라이버 위치 경로 입력
driver = webdriver.Chrome('./chromedriver.exe', chrome_options=options)

# url을 이용하여 브라우저로 접속
driver.get('https://error.incites.thomsonreuters.com/error/Error?DestApp=IC2JCR&Error=IPError&Params=DestApp%3DIC2JCR&RouterURL=https%3A%2F%2Flogin.incites.thomsonreuters.com%2F&Domain=.thomsonreuters.com&Src=IP&Alias=IC2')

driver.implicitly_wait(3)

# 아이디/비밀번호를 입력해준다.
driver.find_element_by_name('username').send_keys('아이디 입력')
driver.find_element_by_name('password').send_keys('비밀번호 입력')

# stay signed in 체크박스 채우기(클릭)
driver.find_element_by_name('rememberme').click()

# 로그인 버튼을 누르기
driver.find_element_by_xpath('/html/body/div/div[1]/div[3]/div[1]/div/div/div/form/button').click()
# 키워드 검색
input = 'Peer-to-Peer Networking and Applications'

# 검색창에 키워드 입력후 검색 버튼 클릭
search = driver.find_element_by_name('search-inputEl')
search.send_keys(input)

driver.find_element_by_xpath('//*[@id="boundlist-1029-listEl"]/ul/li').click()
time.sleep(5)

print(driver.window_handles)

# 새로 열린 탭으로 활성 탭 변경
driver.switch_to.window(driver.window_handles[-1])
time.sleep(5)

# 로그인 된 화면 캡처
driver.get_screenshot_as_file('capture.png')

driver.quit()



 

reference

 

[출처] https://devyurim.github.io/python/crawler/2018/08/13/crawler-3.html

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
391 [python 인터넷][네이버 뉴스 크롤링] python crawling - 네이버 뉴스 기사 크롤링 file 졸리운_곰 2022.06.28 37
390 [python RPA] Robotic Process Automation with Python file 졸리운_곰 2022.03.03 37
389 [python RPA] 3 WAYS TO DO RPA WITH PYTHON file 졸리운_곰 2022.03.03 11
388 [Python RPA] [Python] - 모듈탐구 pyautogui - Python 폴터가이스트 졸리운_곰 2022.03.03 27
387 [python][자료구조] python anaconda 에서 mysql 접속 졸리운_곰 2022.01.25 78
386 [python][anaconda] 파이썬3(python3) 설치하고 환경(env) 관리하기 - 아나콘다3(anaconda3)를 활용한 설치 file 졸리운_곰 2022.01.20 16
385 [python][인공지능] [TensorFlow] Anaconda 가상환경 이용하여 TensorFlow GPU 설치 졸리운_곰 2022.01.20 37
384 [python][anaconda] 파이선 아나콘다 최신 버전 업데이트하기 file 졸리운_곰 2022.01.20 38
383 [python 자료구조] 림코딩의 파이썬으로 csv 다루기 강좌 (읽기,쓰기,수정,추가) 졸리운_곰 2022.01.16 48
382 [Python 데이터분석][python 데이터분석 프로덕션] [Python] Docker를 사용한 Dash 웹앱 생성 file 졸리운_곰 2021.12.10 40
381 [python][flask] bitnami의 django 서버로 flask 서비스 file 졸리운_곰 2021.12.10 14
380 [python 인터넷] How to Select CheckBox and Radio Button in Selenium WebDriver 졸리운_곰 2021.11.26 40
379 [python 인터넷] [Python] Selenium 사용하기 (+PhantomJS) file 졸리운_곰 2021.11.26 16
» [python 인터넷] Python Selenium(셀레니움) 크롬창 활성 탭 변경하기 file 졸리운_곰 2021.11.26 15
377 [python 인터넷 ,selenium] selenium iframe 처리하기 file 졸리운_곰 2021.11.26 36
376 [python 인터넷] Selenium에서 특정 element가 갑자기 클릭이 되지 않을 때 (python) 졸리운_곰 2021.11.26 14
375 [python 인터넷] Selenium Python button 클릭 file 졸리운_곰 2021.11.26 16
374 [python 인터넷] Tor browser 로 selenium webdriver 크롤링 ip 우회 [Windosws] 졸리운_곰 2021.11.26 17
373 [python 인터넷] 파이썬 셀레니움을 이용한 DC인사이드 자동 글쓰기 file 졸리운_곰 2021.11.26 87
372 [Python 인공지능] TextRank 를 이용한 키워드 추출과 핵심 문장 추출 (구현과 실험) file 졸리운_곰 2021.11.22 25
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED