본문 바로가기
Back-end/Python

[Selenium] Chrome에서 탭 여러개 사용하기

by 허도치 2020. 1. 16.

  Selenium을 주로 크롤링 할 때 사용하다보니 따로 다뤄볼 일이 없었다. 그러다가, PC를 켜면 항상 실행하고 로그인해야 하는 웹이 몇개 있는데 이 과정들을 자동화하기로 하였다. 가장 먼저 해야할 일은 웹을 한번에 여러개 실행할 수 있도록 탭을 여러개 띄우는 것이었다. 구글링을 하여 방법을 찾아봤는데 꽤 많은 방법들이 있었다. 그런데, 링크를 가진 요소를 찾아서 [ Ctrl ] + [ Mouse Click ] 이벤트를 발생시키거나, 버전이 안맞아서 그런지 정상적으로 동작하지 않는게 대부분이었다. 그래서, 좀 더 찾다가 가장 깔끔하다고 생각하는 방법을 소개하려고 한다.

 

 

1. 예제 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import selenium.webdriver.support.ui as ui
 
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
 
#chromedriver 경로 설정
CHROMEDRIVER_PATH = './chromedriver.exe'
 
chrome_options = Options()
chrome_options.add_argument('--start-maximized')
 
 
#브라우저 실행 및 탭 추가
driver = webdriver.Chrome( executable_path=CHROMEDRIVER_PATH, chrome_options=chrome_options )
driver.execute_script('window.open("about:blank", "_blank");')
driver.execute_script('window.open("about:blank", "_blank");')
 
tabs = driver.window_handles
 
# TAB_1
driver.switch_to_window(tabs[0])
driver.get('http://www.naver.com/')
 
# TAB_2
driver.switch_to_window(tabs[1])
driver.get('http://www.google.com/')
 
# TAB_3
driver.switch_to_window(tabs[2])
driver.get('https://heodolf.tistory.com/')
cs

     - 18~19 ln: driver.execute_script()를 이용하면 javascript를 실행할 수 있음.

        *여기서 새 탭을 생성하는 Javascript를 작성.  window.open("about:blank", "_blank");

     - 21 ln: driver.window_handles에는 현재 열려있는 탭 리스트가 있음.

 

     - 24 ln: driver.switch_to_window() 함수로 탭을 자유롭게 전환할 수 있음.

 

 

2. 실행 결과.

 

 

3. 마치며

   - 새로운 탭을 여러개 사용하는 방법에 대해서 찾아보다가, selenium으로 javascript 까지도 실행할 수 있다는 것을 알게되었다. 이걸 잘만 활용하면 유용하게 쓸 수 있을것 같다.

   - 그리고 Seleninum을 실행했을 때, 'Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다.' 이 문구가 거슬린다. 다음 포스트에서는 이 문구를 지우는 방법에 대해서 알아보도록 하겠다.

댓글