Chrome 옵션 및 원하는 기능 Selenium

⚡ 스마트 요약

크롬 옵션 및 원하는 기능 Selenium WebDriver는 자동화 테스트 중에 Chrome 브라우저가 실행되고 동작하는 방식을 제어합니다. 이를 통해 인수, 확장 프로그램, SSL 처리 및 크로스 브라우저 설정을 구성하여 테스트 실행을 유연하고 반복 가능하며 바로 사용할 수 있도록 준비합니다. Selenium 그리드 실행.

  • 🌐 크롬 옵션: start-maximized, incognito, headless와 같은 인수를 사용하여 세션을 사용자 지정합니다.
  • ⚙️ 요구되는 역량: 브라우저 이름, 플랫폼, 버전 및 SSL 인증서 허용 여부를 설정합니다.
  • 🧩 확장 프로그램 : CRX 파일을 수동으로 설치하는 대신 자동화를 통해 로드하세요.
  • 🕵️ 익명 모드 및 헤드리스 모드: 재사용 가능한 코드는 CI 파이프라인을 위해 비공개 또는 백그라운드 세션을 실행합니다.
  • 🖥️ Selenium 그리드: 이러한 기능은 브라우저 간 호환성을 보장하고 분산 환경에서 테스트를 실행할 수 있도록 합니다.
  • ⚠️ Selenium 4년 참고: DesiredCapabilities는 더 이상 사용되지 않습니다. ChromeOptions를 드라이버에 직접 전달하세요.

크롬 옵션 및 원하는 기능 Selenium 웹드라이버

Chrome 옵션 클래스란 무엇입니까?

The Chromeoptions 클래스 의 개념이다 Selenium Chrome 드라이버의 다양한 속성을 조작하기 위한 WebDriver. Chrome 옵션 클래스는 일반적으로 Desired Capabilities와 함께 사용되어 Chrome 드라이버 세션을 사용자 정의합니다. Chrome을 최대화 모드로 열고, 기존 확장 프로그램을 비활성화하고, 팝업을 비활성화하는 등 다양한 작업을 수행하는 데 도움이 됩니다.

예:

아래 예는 ChromeOptions 클래스를 사용하여 최대화 모드에서 Chrome 브라우저를 여는 방법을 보여줍니다. ChromeOptions 클래스의 인스턴스를 웹 드라이버 초기화에 전달해야 합니다.

ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);

다음은 ChromeOptions 클래스에 사용 가능하고 가장 일반적으로 사용되는 인수 목록입니다.

  • 시작 최대화: Chrome을 최대화 모드로 엽니다.
  • 가명: 시크릿 모드로 Chrome을 엽니다.
  • 목이 없는: 헤드리스 모드에서 Chrome을 엽니다.
  • 확장 기능 비활성화: Chrome 브라우저에서 기존 확장 프로그램을 비활성화합니다.
  • 팝업 차단 비활성화: Chrome 브라우저에 표시되는 팝업을 비활성화합니다.
  • 기본 브라우저로 설정: Chrome을 기본 브라우저로 설정
  • 버전: 크롬 브라우저 버전을 인쇄합니다.
  • 비활성화 정보 표시줄: Chrome에 'Chrome이 자동화된 소프트웨어에 의해 제어되고 있습니다'라는 알림이 표시되지 않도록 합니다.

원하는 기능 클래스

원하는 기능 클래스 웹 드라이버의 여러 속성을 수정하는 데 사용됩니다. 브라우저 이름, 브라우저 플랫폼 등과 같은 웹 드라이버의 개별 속성을 변경하기 위한 키-값 쌍을 제공합니다. Desired Capability 클래스의 일반적인 메서드는 setCapability 메서드입니다. 주로 다음과 같이 사용됩니다. Selenium 동일한 테스트 케이스를 다른 브라우저에서 실행해야 하는 그리드.

예:

아래 예는 Chrome 클래스에 필요한 기능을 사용하여 기본적으로 웹사이트에서 SSL 인증서를 허용하도록 Chrome 브라우저를 활성화하는 방법을 보여줍니다.

// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability – ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);

다음은 가장 일반적으로 사용되는 사전 정의된 기능 유형입니다.

기능 이름 기술설명
ACCEPT_SSL_CERTS 이 속성은 브라우저가 기본적으로 SSL 인증서를 수락하도록 지시합니다.
PLATFORM_NAME 이 속성은 웹 사이트에 액세스하는 데 사용되는 운영 체제 플랫폼을 설정하는 데 사용됩니다.
BROWSER_NAME 이 속성은 웹 드라이버 인스턴스의 브라우저 이름을 설정하는 데 사용됩니다.
버전 이 속성은 브라우저 버전을 설정하는 데 사용됩니다.

Adblocker 확장 프로그램을 위한 Chrome 옵션

Chrome 브라우저의 Adblocker 확장 프로그램은 ChromeDriver Options 및 Desired Capabilities 클래스를 사용하여 처리할 수 있습니다. 액세스하는 단계는 다음과 같습니다. AdBlockDesired Capability 클래스를 사용하여 Chrome 브라우저에 확장 프로그램을 추가합니다.

단계 1) AdBlockChrome 옵션 클래스를 사용하기 전에 Chrome 브라우저에 확장 프로그램을 설치해야 합니다.

단계 2) Extract에 해당하는 CRX 파일 AdBlockhttp://crxex를 통한 er 확장tractor.com/

단계 3) 다운로드한 CRX 파일 경로를 Chrome 옵션 클래스에 전달합니다.

단계 4) 원하는 기능 클래스와 Chrome 옵션을 사용하여 웹 드라이버를 인스턴스화합니다. Selenium 대상

예:

아래 예에서는 Chrome 옵션 및 원하는 기능 클래스를 사용하여 Chrome 브라우저에서 광고 차단 확장 프로그램을 활성화하는 방법을 보여줍니다.

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

Extract CRX 파일

아래 단계는 ex 과정을 보여줍니다.trac웹사이트를 통해 광고 차단기를 거쳐 CRX 파일을 전송하는 방법 - http://crxextractor.com/

단계 1) We Buy Orders 신청서를 클릭하세요. http://crxextractor.com/ 그리고 시작 버튼을 클릭하세요

Extract CRX 파일

단계 2) 크롬 확장 프로그램인 Ad Blocker를 사용해 보세요. URL 텍스트 상자 아래에. URL 크롬 웹 스토어에서 Adblock을 다운로드하세요. https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

그리고 확인을 클릭하세요

Extract CRX 파일

단계 3) 확인 버튼을 클릭하면 아래와 같이 버튼 라벨이 Get .CRX로 변경됩니다. Get .CRX 버튼을 클릭하면 확장명에 해당하는 CRX 파일이 다운로드됩니다.

Extract CRX 파일

단계 4) 파일을 로컬 컴퓨터에 저장하고 저장된 경로를 기록해 둡니다. 다음 단계는 저장된 경로를 Chrome 옵션 클래스에 전달하는 것입니다.

견본 Code:

  1. 다음 위치에서 광고가 표시됩니다. https://demo.guru99.com/ 아래

Extract CRX 파일

  1. 와 AdBlockChrome 브라우저 광고에서 활성화된 확장 프로그램은 비활성화되어야 합니다.
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class AdblockDemo {
public static void main(String[] args)  {
	
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");		
	ChromeOptions options = new ChromeOptions();
	options.addExtensions(new File("X://extension_3_40_1_0.crx")); 
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code 설명:

  1. 처음에는 테스트용으로 Chrome 브라우저를 사용하므로 set 속성 메서드를 사용하여 chromedriver.exe 파일의 경로를 설정해야 합니다.
  2. 확장 방법을 추가하려면 CRX 파일의 경로를 설정해야 합니다.
  3. 그런 다음 Chrome에서 원하는 기능 개체를 생성해야 합니다. Selenium 클래스를 만들어 웹 드라이버 인스턴스에 전달합니다. 에서 Selenium 3.8.1 버전에서는 드라이버 기능 클래스가 더 이상 사용되지 않으며 동일한 인수를 Chrome 드라이버 생성자에 전달하기 전에 기능 개체를 Chrome 옵션 개체와 병합해야 합니다.
  4. 열기 URL - https://demo.guru99.com/test/simple_context_menu.html 광고 차단기 확장 기능이 활성화된 경우
  5. 브라우저를 최대화하고 닫습니다.

알림: 우리는 활성화하고 있습니다 AdBlock어 확장자 Chrome 브라우저에서 자동화 스크립트를 통해 수동으로 Chrome 브라우저에서 Adblocker 확장 프로그램을 활성화하는 대신. CRX 파일은 자동화 스크립트를 사용하여 광고 차단기 확장 프로그램에 액세스하는 방법입니다.

출력:

Chrome 브라우저는 다음과 같이 활성화됩니다. AdBlock광고 없이 아래와 같이 확장 프로그램이 활성화되었습니다.

Extract CRX 파일

ChromeOptions는 확장 프로그램 로드 외에도 브라우저 창 자체의 실행 방식을 제어합니다.

시크릿 모드용 Chrome 옵션

사전 정의된 인수를 사용하여 시크릿 모드에 Chrome 옵션을 사용할 수 있습니다.가명.

다음은 동일한 작업을 수행하는 샘플 코드입니다.

견본 Code:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Incognito{
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--incognito");
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);		
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code 설명:

  1. 처음에는 테스트용으로 Chrome 브라우저를 사용하므로 set 속성 메서드를 사용하여 chromedriver.exe 파일의 경로를 설정해야 합니다.
  2. 그런 다음 Chrome 옵션 클래스의 객체를 생성하고 이를 웹 드라이버 인스턴스에 전달해야 합니다. 시크릿 모드에서 Chrome 브라우저를 열려고 하므로 –incognito 인수를 Chrome 옵션 클래스에 전달해야 합니다.
  3. 다음으로 Desired Capability 클래스의 객체를 생성하고 merge 메소드를 사용하여 Desired Capability 클래스 객체를 Chrome Options 클래스 객체와 병합합니다.
  4. Chrome 드라이버 클래스의 객체를 생성하고 Chrome 옵션 객체를 인수로 전달해야 합니다.
  5. 마지막으로, 우리는 통과해야 합니다. URL - https://demo.guru99.com/test/simple_context_menu.html Driver.get 메소드에
  6. 브라우저를 최대화하고 닫습니다.

출력:

아래와 같이 크롬 브라우저 창이 시크릿 모드로 열립니다.

시크릿 모드에 대한 Chrome 옵션

헤드리스 Chrome용 Chrome 옵션

Headless 브라우저는 백그라운드에서 실행됩니다. 브라우저 GUI나 해당 브라우저에서 수행된 작업을 볼 수 없습니다.

헤드리스 모드에서 Chrome 브라우저를 실행하기 위한 Chrome 옵션은 사전 정의된 인수를 사용하여 수행할 수 있습니다.머리가없는.

이를 수행하기 위한 샘플 코드는 아래에 언급되어 있습니다.

예:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class HeadlessModeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(ChromeOptions.CAPABILITY, options);
		options.merge(capabilities);
		ChromeDriver driver = new ChromeDriver(options);		
		driver.get("https://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code 설명:

  1. 처음에는 테스트용으로 Chrome 브라우저를 사용하므로 set 속성 메서드를 사용하여 chromedriver.exe 파일의 경로를 설정해야 합니다.
  2. 다음으로 Chrome 옵션 클래스의 객체를 생성하고 이를 웹 드라이버 인스턴스에 전달합니다. 헤드리스 모드에서 Chrome 브라우저를 열고 싶기 때문에 –headless 인수를 Chrome 옵션 클래스에 전달해야 합니다.
  3. DesiredCapability Chrome 클래스의 개체를 생성하고 병합 메서드를 사용하여 Desired Capability 클래스 개체를 Chrome 옵션 클래스 개체와 병합합니다.
  4. Chrome 드라이버 클래스의 객체를 생성하고 Chrome 옵션을 전달합니다. Selenium 인수로서의 객체
  5. 마지막으로, 우리는 통과해야 합니다. URL - https://demo.guru99.com/ Driver.get 메소드에
  6. 페이지 제목을 인쇄하고 브라우저를 닫습니다.

산출

Chrome이 Headless 모드로 작동하기 때문에 위 코드의 경우 브라우저가 보이지 않습니다. 페이지 제목은 아래와 같이 가져와서 표시됩니다.

헤드리스 Chrome용 Chrome 옵션

자주 묻는 질문

예. Selenium 4. DesiredCapabilities는 ChromeOptions와 같은 브라우저 옵션 클래스로 대체되어 더 이상 사용되지 않습니다. Selenium 3. 그것들을 병합했습니다. Selenium 4. ChromeOptions를 드라이버에 직접 전달합니다.

addArguments 함수를 호출할 때 여러 플래그를 사용할 수 있습니다. 예를 들어 options.addArguments 함수에 start-maximized와 incognito를 함께 사용할 수 있습니다. 여러 함수를 연결하여 호출하는 것도 가능합니다. 각 인수는 Chrome 세션 시작 방식을 사용자 지정합니다.

addArguments는 headless 또는 incognito와 같은 명령줄 플래그를 Chrome에 전달합니다. addExtensions는 패키지된 .crx 확장 프로그램 파일을 세션에 로드합니다. 둘 다 동작을 사용자 지정하지만 목적은 다릅니다.

네. Copilot과 같은 AI 도우미는 ChromeOptions 및 기능 설정을 구성하고, 인자 이름을 제안하며, 더 이상 사용되지 않는 API를 설명합니다. 플래그 이름과 같은 정보가 포함되어 있을 수 있으므로 출력 내용을 항상 검토하십시오. Selenium 버전이 자주 변경됩니다.

AI 기반 자가 복구 도구는 Chrome 업그레이드 후 인수를 자동으로 업데이트하고, 불안정한 플래그를 감지하며, 안정적인 대체품을 제안합니다. 또한 헤드리스 실행에 대한 유지 관리 부담을 줄이고 CI 환경 전반에 걸친 기능 불일치 문제를 해결합니다.

예. ChromeOptions는 그리드 실행을 위한 RemoteWebDriver와 함께 작동합니다. 옵션을 원격 세션에 연결하면 분산된 머신과 브라우저에서 동일한 구성을 실행할 수 있습니다.

이는 일반적으로 ChromeDriver와 Chrome 브라우저 버전이 일치하지 않음을 의미합니다. 일치하는 ChromeDriver를 설치하거나 다음을 사용하십시오. Selenium 관리자 Selenium 4. 드라이버를 자동으로 해결합니다.

실험적인 옵션을 사용해 보세요. `setExperimentalOption`을 통해 `download.default_directory`가 포함된 환경설정 맵을 전달합니다. 그러면 Chrome은 자동화된 테스트 중에 해당 폴더에 파일을 자동으로 저장합니다.

이 게시물을 요약하면 다음과 같습니다.