본문 바로가기

개발이야기

[Selenium-JAVA] Chrome 브라우져와 연계시 extension Load하기

현재 내가 운영하는 서비스에서 UI 테스트 툴인 selenuim을 데이터 크롤링하는 용도로 사용중이다.

우리나라 사이트들은 많이 바뀌는 추세지만, 아직도 activex를 사용한다는지 ,

다양한 브라우져를 지원한다는 명목으로 아직도 덕지덕지 크롬 기반인데 각종 extension을 연계해서 사용중이다.

ActiveX나 크롬에다가 extension을 활용하여 이부분을 사용하지 못하는 사이트들을 접근하기 위해서 브라우져를 컨트롤해서 작업하는 방법을 알아보다가 selenium을 알게되어서 사용중인데, 

IE의 경우 activeX를 설치하면 selenium으로 IE 브라우져를 수행할때 해당 ActiveX를 특별한 설정없이 이용할수 있어서 IE Webdriver와 연계하여 사용했는데, 요즘 IE도 곧 지원이 종료되어서 크롬 브라우져로 사용할 방법을 고민해보는데

크롬의 경우는 크롬 webdriver로 수행시 설치한 extension이 제대로 로드되지 않는다.

보통 아래와 같이 하면 사용할수 있다고 해서 테스트해봤으나 역시 마찬가지

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

보통 우리나에서 다양한 브라우져를 지원하기위해서 exe 및 crx를 지원하긴 하데는 별도로 다운받아보고 해봤으나 제대로 동작을 안해서 이것 저것  테스트 하다 보니 결국 extension 의 디렉토리 경로를 설정해주니 어느정도 해결이 되었다. 

위의 addExtensions 의 경로에 크롬의 load 하고자 하는 extension 폴더를 지정해주면 되었다.

기본적으로 크롬은 아래의 폴더에 extension이 있다.

폴더 정보 : C:\사용자\로그인유저\AppData\Local\Google\Chrome\User Data\Default\Extensions

load하고자 하는 extension 정보는 

chrome://extensions/ 에 확장프로그램 정보가 있고 여기서  세부정보 > 크롬웹스토어에서보기 클릭 하면 확장프로그램에 대한 정보로 매칭해서 가져오면 될듯 싶다. 

참고로 내가 자주 사용하는 JSONVue의 경우를 예를들면 (이부분은 테스트 안해봐서 안될수도 있음. ^^;)

https://chrome.google.com/webstore/detail/jsonvue/chklaanhfefbnpoihckbnefhakgolnmc

 

JSONVue

Validate and view JSON documents

chrome.google.com

 

위와 같이 되어 있는데 이 확장프로그램을 load하고 싶다면 아래와 같은 폴더 정보를 찾아서 처리해주면될듯하다.

C:\사용자\로그인유저\AppData\Local\Google\Chrome\User Data\Default\Extensions\chklaanhfefbnpoihckbnefhakgolnmc\0.1.17_0

물론 위와 같이 crx 파일을 특정위치에 놓고 해도 되는 경우도 있지 않을까 생각은 들지만, 위와 같이 된다면 사실 좀 더 유연하게 프로그램을 할 수 있을듯 한데...그부분은 아쉽다.

참고한 사이트 : https://stackoverflow.com/questions/34222412/load-chrome-extension-using-selenium

 

Load chrome extension using selenium

While running selenium, I need to load a chrome extension from the web store. In my research, I only found how to load an extension from the local machine. Is it possible for selenium to load an

stackoverflow.com