Message: element not interactable

 

셀레늄으로 동적 크롤링을 하는 과정에서 페이지를 클릭할 때 에러가 발생했다.

 

찾아보니 element가 표시되지 않거나 화면 밖에 있어서 클릭할 수 없는 경우,

버튼이 비활성화되어있는 경우, 팝업창에 가려져 버튼을 클릭하지 못하는 경우 등의 상황에 발생하는 오류라고 한다.

오류의 원인이 다양한 만큼 저마다 해결되었다는 방식도 달랐다.

 

나의 경우에는 해당 요소가 iframe 안에 있지않았고, 버튼 위치도 문제 없었다.

 

 

 

1) xpath 가져올때 full로 가져오기

2) click() 대신 send_keys(Keys.ENTER) 사용하기

 

등을 시도하면서 오류를 찾다보니 창 크기에 따라서 노출되는 페이지 수가 다르다는걸 발견했다.

창의 크기가 작으면 1~5페이지까지, 크면 1~10페이지가 표시됐다.

 

왜 이게 문제라고 생각을 못했냐면, 나는 2페이지로 이동하는걸 테스트 중이었고

창의 크기와 상관없이 2페이지는 육안으로 확인이 가능했기 때문이다.

페이지 상에 표시가 되더라도 연관이 있나보다...

 

결과적으로 창의 크기를 최대화한 상태에서는 오류가 나지않았다.

 

options = webdriver.ChromeOptions()  
options.add_argument("--start-maximized")

 

 

다음에 같은 오류를 만난다면 가장 먼저 창의 크기에 따라 UI가 변화하는지부터 체크해야겠다.