셀레니움을 이용해서 이것저것하다가 한가지 문제점을 직면했는데 혹시 도움이 될까봐 올린다.
A라는 사이트를 셀레니움을 이용하여 조작한다고 치자. 그런데 A사이트는 사이트가 열릴 때 브라우저가 하나 더 열린다. 예를들면 아래그림과 같다.
주황색 창이 우리가 원래 열려고 한 A이고 초록생 창은 A가 열리면서 같이 나오는 새로운 창이다.
저 초록생 창을 자동으로 닫히게 원하는 사람들이 있을 것이다. 어떻게 해야할까?
셀레니움에 있는 windows_handles과 switch_to를 이용하면 되는데 예시 코드를 보자
all_windows = driver.windows_handles << 이렇게 하게되면 all_windows에는 리스트 형태로 현재 창들이 들어가게 된다. (현재 그림에서는 창이 2개이므로 리스트의 개수는 2개이다.)
main_window = driver.windows_handles[0] >> 이렇게하면 주황색창을 나타내는 window를 변수로 나타낼 수 있다.
green_window = driver.windows_handles[1]
driver.switch_to.window(green_window)
driver.close()
driver.switch_to.window(main_window)
이렇게 작성하면
1.현재 driver가 초록생 창을 가리키게한후에
2.초록색 창을 닫고
3.다시 driver가 주황색 창으로 돌아온다.
위의 것들을 응용하면 여러 개의 창을 셀레니움으로 컨트롤 할 수 있다.