JCR 홈페이지에서 로그인을 한 뒤에 검색을 하면 새로운 탭이 켜지고 새로운 탭에 검색결과가 나타났다. 그래서 셀레니움을 통해
1. 검색 자동화

먼저 위의 이미지와 같은 검색 창에서 검색 할 수 있도록 프로그램을 작성한다.
- 검색창에 검색 어 입력
- 검색어 입력시 하단에 나오는 버튼 클릭
이전 코드에 이어서(로그인 버튼 누르기 다음) 아래에 추가한 코드는 다음과 같다.
# 키워드 검색
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)
수정한 전체 코드는 아래와 같다.
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://kiddwannabe.blog.me/221288079822