옵션?

우리가 셀레니움을 이용하는 대부분의 이유는 반복작업을 대체하기 위해 사용한다고 생각합니다.

단순한 반복작업을 하는데 굳이 브라우저가 눈에 보일 필요는 없겠죠

브라우저가 백그라운드에 존재하며 우리눈에 보이지 않더라도 작업은 계속 진행되게 하고 싶습니다

그리고 크롬드라이버프롬프트창도 숨기고 싶구요. gpu가속도 사용하기 싫고 안전한페이지검증절차도 거치기 싫을 수 있습니다. 이런 모든것들을 우리는 옵션설정을 통해 원하는 브라우저의 행동을 제어할 수 있습니다

 

 


너무 많은 옵션들

https://peter.sh/experiments/chromium-command-line-switches/

 

List of Chromium Command Line Switches « Peter Beverloo

 

peter.sh

해당 사이트에서 크롬의 명령문을 찾을 수 있습니다

하지만 너무 많죠? 자주사용되는 명령문만 다뤄보겠습니다

 

		_options = new ChromeOptions();

            //명령프롬프트 숨기기
            _driverService.HideCommandPromptWindow = true;

            //안전하지않은 페이지경고 무시하기
            _options.AddArgument("--ignore-certificate-errors");

            //gpu가속 비활성화
            _options.AddArgument("--disable-gpu");

            //브라우저 숨기기
            _options.AddArgument("--headless");

            //브라우저 사이즈조절. headless모드에서 사용하면 유용합니다
            _options.AddArgument("--window-size=1920,1080");

주석에 나와 있는대로 이해하시면 됩니다.

다만 추가 설명이 필요한곳이 window-size옵션인데 

특정 웹에서는 브라우저 사이즈가 작으면 웹 디자인이 변경되기도 합니다

나는 최대화된 브라우저를 기준으로 코드를 작성했는데

headless로 브라우저를 숨겨서 작동시키면 제대로 동작하지 않는 경우가 종종 생깁니다

이런 것을 방지하기 위해 브라우저를 숨겨서 작동시키지만 브라우저사이즈를 옵션으로 직접 늘려줍니다.

 

만약 명령프롬프트를 숨겼다면 해당코드를 프로그램종료전에 혹은 종료시 꼭 작동시켜주세요

_driver?.Quit();

프로그램을 종료한다고 크롬드라이버까지 자동으로 종료되지 않습니다.

드라이버를 종료하지 않았다면 프로그램을 종료해도 드라이버는 작업관리자에서 둥둥 떠다닙니다 조심하세요

참고로 코드에서 ?.는 null체크입니다

 

이제 코드를 실행해보시면 작업관리자에 크롬드라이버가 존재하지만 브라우저가 눈에 보이지 않을 것입니다.

지금은 연습단계이므로 이러한 옵션이 있다는 것을 염두하고

다음 포스트부터는 다시 옵션을 전부 제거하고 진행해보겠습니다

 

https://github.com/ForestBird1/TestSelenium.git

 

GitHub - ForestBird1/TestSelenium

Contribute to ForestBird1/TestSelenium development by creating an account on GitHub.

github.com

 

+ Recent posts