Selenium Firefox 프로필: 설정 가이드

⚡ 스마트 요약

Firefox 프로필에는 한 브라우저 사용자의 북마크, 비밀번호, 추가 기능 및 환경 설정이 저장됩니다. Selenium WebDriver는 전용 프로필을 로드하여 모든 자동화 실행이 동일하고 예측 가능한 브라우저 상태에서 시작되도록 할 수 있습니다.

  • 🔘 프로필 기본 정보: A Firefox 프로필 폴더에는 사용자의 북마크, 저장된 비밀번호, 추가 기능, 인증서 및 환경 설정이 모두 저장됩니다.
  • ☑️ 프로필 위치: Windows, 리눅스 및 macOS 각 스토어 프로필 폴더는 사용자 디렉터리 내의 서로 다른 경로에 저장됩니다.
  • 프로필 생성 : 내장 프로필 관리자는 firefox.exe -p 명령으로 실행되며 5단계에 걸쳐 깔끔한 자동화 프로필을 생성합니다.
  • 🧪 Code 접속하다: ProfilesIni 클래스는 profiles.ini 파일을 읽고, getProfile 메서드는 지정된 이름의 프로필을 반환합니다. Firefox프로필 개체.
  • 🛠️ 현재 구문: Selenium 3번과 4번은 프로필을 통과시킵니다. Firefox옵션.setProfile을 사용하는 대신 Firefox드라이버 생성자.
  • ⚠️ 기본 설정 : setPreference는 브라우저 실행 전에 다운로드 폴더, 알림, 언어 및 인증서 처리 방식을 제어합니다.

Selenium Firefox 프로필 설정 가이드

Selenium Firefox 프로필

Firefox 프로필은 웹사이트에서 수행할 수 있는 설정, 사용자 정의, 추가 기능 및 기타 개인화 설정의 모음입니다. Firefox Browser. 사용자 정의할 수 있습니다. Firefox 당신에게 어울리는 프로필 Selenium 자동화 요구 사항.

또한, Firefox 또는 다른 브라우저가 SSL 인증서 설정을 처리합니다. 따라서 이를 자동화하는 것은 테스트 실행 코드와 함께 많은 의미가 있습니다.

간단히 말해 프로필은 사용자의 개인 설정입니다. 안정적인 실행을 원할 때 자동화 에 Firefox 브라우저를 사용하는 경우 별도의 프로필을 만드는 것이 좋습니다. 전용 프로필을 사용하면 일상적인 검색 데이터가 테스트 실행에 포함되지 않으므로, 테스트 실행 시 가장 먼저 확인해야 할 사항입니다. Selenium 스크립트가 두 컴퓨터에서 다르게 동작합니다.

디스크의 프로필 폴더 위치

Firefox 프로필은 다른 사용자가 사용하는 것과 같습니다. Firefox. Firefox 즐겨찾기, 비밀번호, 사용자 환경설정 등의 개인 정보를 저장하며, 프로필 관리자를 사용하여 이러한 정보를 편집, 삭제 또는 생성할 수 있습니다.

아래 스크린샷은 디스크에 저장된 프로필 폴더의 모습을 보여줍니다. 폴더 이름은 프로필 이름과 임의의 접두사로 구성됩니다.

Firefox 디스크에 표시되는 프로필 폴더는 임의의 접두사와 함께 표시됩니다.

프로필 위치는 다음과 같습니다

  • 럭셔리 Windows > C:\Users\ \AppData\Roaming\Mozilla\Firefox\프로필\프로필_이름.기본값
  • 럭셔리 Linux > ~/.mozilla/firefox/profile_name.default/
  • Mac OS X의 경우 > ~/Library/Application Support/Firefox/프로필/profile_name.default/

성공적으로 운영하기 위해서는 Selenium 테스트, Firefox 프로필은 –

  • 로드 쉬운
  • 필요한 경우 프록시 설정
  • 자동화 요구에 따른 기타 사용자별 설정

설정 방법 Firefox 님의 프로필 Selenium 테스트

단계별로 만드는 방법을 살펴보겠습니다. Firefox 윤곽.

단계 1) 닫기 Firefox 브라우저

첫 번째 단계에서는 닫기를 클릭하세요. Firefox 이미 열려 있는 경우 프로필 관리자는 시작되지 않습니다. 프로필 관리자가 열려 있는 동안에는 시작되지 않습니다. Firefox 창이 실행 중입니다.

단계 2) 오픈런(Windows 키 + R)을 누르고 firefox.exe –p를 입력합니다.

확인 버튼을 누르기 전에 실행 대화 상자가 아래 스크린샷과 같이 표시되어야 합니다.

Windows firefox.exe -p 명령어를 입력하여 실행 대화 상자를 엽니다.

참고: 만약 열리지 않으면 전체 경로를 따옴표로 묶어서 시도해 보세요.

  • 32비트에서 Windows: “C:\Program Files\Mozilla Firefox\firefox.exe” –p
  • 64비트에서 Windows (32비트 Firefox): “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p

단계 3) 사용자 프로필 선택

이제, 대화 상자라는 이름이 표시됩니다. Firefox 아래 그림과 같이 열립니다.

Firefox 기존 프로필 목록이 표시되는 사용자 프로필 선택 대화 상자

단계 4) 프로필 만들기

다음 스크린샷에 표시된 '프로필 생성' 옵션을 선택하여 마법사를 시작하세요.

프로필 생성 마법사 시작 화면 Firefox 프로필 관리자

이제 창에서 프로필 만들기 옵션을 선택하면 마법사가 열립니다. 다음을 클릭하세요.

단계 5) 프로필 이름을 입력하세요.

아래 강조 표시된 필드에 자동화 프로필의 이름을 입력하고 마법사를 완료하세요.

새로운 것을 입력 Firefox 프로필 생성 마법사에서 프로필 이름을 선택하세요

이제 프로필이 준비되었습니다. 프로필을 선택하고 열 수 있습니다. Firefox여기서부터 프로필은 다른 브라우저 세션과 마찬가지로 작동합니다. 첫 번째 WebDriver 스크립트 변경 없이 그대로 실행될 것입니다.

당신은 새로운 것을 알게 될 것입니다 Firefox 창에는 북마크와 즐겨찾기 아이콘이 표시되지 않습니다.

참고: 마지막으로 선택한 프로필이 다음 실행 시 자동으로 로드됩니다. Firefox 시작하다. 프로필을 변경하려면 프로필 관리자를 다시 시작해야 합니다.

자동화 스크립트 Selenium

프로필이 생성되면 다음 단계는 코드에서 해당 프로필을 불러오는 것입니다. 새로 생성된 프로필에 접근하려면... Firefox 프로필 Selenium WebDriver 소프트웨어 테스트를 위해 WebDriver의 내장 클래스인 ProfilesIni와 해당 클래스의 getProfile 메서드를 아래와 같이 사용해야 합니다.

⚠️ 버전 참고: 이 섹션의 발췌문은 원본입니다. Selenium 2 형태. 현재 Selenium 수업이 진행되는 동안 그 수업이 진행됩니다. org.openqa.selenium.firefox.ProfilesIni - .내부 하위 패키지가 삭제되었으며, 프로필은 운전자에게 전달됩니다. Firefox옵션. 참조하세요. Firefox아래 옵션 섹션에서 최신 버전을 확인하세요.

Selenium 프로필 코드

이 코드는 프로필을 구현하는 코드이며, 해당 프로필은 내장될 수 있습니다. Selenium 암호.

ProfilesIni profile = new ProfilesIni();

// 이렇게 하면 객체가 생성됩니다. Firefox 윤곽

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// 이렇게 하면 초기화됩니다. Firefox 운전사

WebDriver driver = new FirefoxDriver(myprofile)

다음 예제를 통해 이 코드의 구현 방식을 살펴보겠습니다.

Firefox 프로필 예 1

첫 번째 예제는 이름으로 프로필을 불러옵니다. 아래 스크린샷은 편집기 내에서 동일한 스크립트가 실행되는 모습을 보여줍니다.

Firefox 프로필 예시 1: 편집기에서 이름으로 프로필을 불러오는 스크립트

// import the package
import java.io.File;
      import java.util.concurrent.TimeUnit;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class FirefoxProfile {
 	public static void main(String[] args) {
	ProfilesIni profile = new ProfilesIni();
	FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// Initialize Firefox driver
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window
	driver.manage().window().maximize();
//Go to URL which you want to navigate
	driver.get("http://www.google.com");
//Set  timeout  for 5 seconds so that the page may load properly within that time
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser
	driver.close();
}

}

코드에 대한 설명

아래는 코드를 한 줄씩 설명하는 것입니다.

  • Code 2-7행: 우선 실행에 필요한 패키지를 가져와야 합니다. Selenium 암호.
  • Code 8번째 줄: 공개 클래스 "를 만드세요Firefox프로필."
  • Code 9번째 줄: 객체를 생성합니다 (객체 지향 프로그래밍 개념에 대한 기본적인 지식이 필요합니다).
  • Code 10-11행: 초기화가 필요합니다. Firefox myprofile 객체를 가진 프로필입니다.
  • Code 13번째 줄: 객체 생성 Firefox.
  • Code 15번째 줄: 창을 최대화합니다.
  • Code 17번째 줄: driver.get은 주어진 위치로 이동하는 데 사용됩니다. URL.
  • Code 19번째 줄: 타임아웃 설정은 브라우저가 다음 페이지로 넘어가기 전에 페이지를 로드할 수 있도록 일정 시간 동안 대기하는 데 사용됩니다.
  • Code 21번째 줄: 닫기 Firefox.

다른 예를 하나 더 살펴보겠습니다.

Firefox 프로필 예 2

두 번째 예시는 profiles.ini 파일을 건너뛰고 편집기 스크린샷에서 볼 수 있듯이 프로필 폴더를 직접 지정합니다.

Firefox 프로필 예시 2 스크립트 가리키기 Firefox폴더 경로에 있는 프로필

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;

public class FirefoxProfile2{
public static void main(String[] args) {

// Create object for FirefoxProfile
	FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default "));  
// Initialize Firefox driver    
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window       
	driver.manage().window().maximize();
//Go to URL      
	driver.get("http://www.google.com");
//Set  timeout      
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser  
	driver.close();
    }

코드에 대한 설명

아래는 코드를 한 줄씩 설명하는 것입니다.

  • Code 1-6행: 우선 실행에 필요한 패키지를 가져와야 합니다. Selenium 암호.
  • Code 8번째 줄: 공개 클래스를 만드세요 Firefox프로필2.
  • Code 12번째 줄: 정확한 경로를 참조하여 myprofile 객체를 생성합니다.
  • Code 14번째 줄: 객체 생성 Firefox.
  • Code 16번째 줄: 창을 최대화합니다.
  • Code 18번째 줄: driver.get은 주어진 위치로 이동하는 데 사용됩니다. URL.
  • Code 20번째 줄: 타임아웃 설정은 브라우저가 다음 페이지로 넘어가기 전에 페이지를 로드할 수 있도록 일정 시간 동안 대기하는 데 사용됩니다.
  • Code 22번째 줄: 닫기 Firefox.

참고로, 이 코드 조각의 경로는 원래 튜토리얼에 나와 있는 그대로 작성되었습니다. 실제 컴퓨터에서는 백슬래시를 이스케이프해야 합니다. 예를 들어 "C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\"와 같이 작성해야 합니다.Firefox\\프로필\\xyzProfile.default”.

사용 방법 Firefox 프로필에 Selenium 4 Firefox형식

위의 두 예시는 모두 특정 조건에 대해서만 컴파일됩니다. Selenium 2. 그 후 두 가지가 변경되었으며, 현재 모든 튜토리얼은 새로운 형식을 사용합니다.

  • ProfilesIni는 이사 나갔습니다. 내부의 하위 패키지이므로 가져오기는 이제 org.openqa.selenium.firefox.ProfilesIni가 됩니다.
  • The Firefox운전사(Firefox프로필 생성자가 제거되었습니다. 프로필은 다음 항목에 연결됩니다. Firefox옵션 객체가 드라이버로 전달됩니다.
  • Selenium 4개의 타임아웃은 값과 TimeUnit을 더하는 대신 java.time.Duration을 받으므로 implicitlyWait(5, TimeUnit.SECONDS)는 implicitlyWait(Duration.ofSeconds(5))가 됩니다.

아래 표는 각 기존 호출을 해당 대체 호출로 매핑합니다.

레거시 콜(Selenium 2) 현재 호출(Selenium 3 및 4)
org.openqa.selenium.firefox.internal.ProfilesIni를 가져옵니다. org.openqa.selenium.firefox.ProfilesIni를 가져옵니다.
Firefox운전사(myprofile) 옵션.setProfile(myprofile); 새로운 Firefox드라이버(옵션)
implicitlyWait(5, TimeUnit.SECONDS) implicitlyWait(Duration.ofSeconds(5))
geckodriver에 대한 System.setProperty 자동으로 해결됨 Selenium 매니저

최신 버전을 기준으로 다시 작성된 예제 1은 다음과 같습니다.

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.ProfilesIni;

public class FirefoxProfileSelenium4 {
    public static void main(String[] args) {
        ProfilesIni allProfiles = new ProfilesIni();
        FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile");

        FirefoxOptions options = new FirefoxOptions();
        options.setProfile(myprofile);

        WebDriver driver = new FirefoxDriver(options);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.get("https://www.google.com");
        driver.quit();
    }
}

프로필 조회 자체는 변경되지 않았습니다. ProfilesIni는 여전히 profiles.ini 파일을 읽습니다. Firefox 애플리케이션 데이터 폴더와 getProfile 메서드는 이름이 프로필과 일치하지 않을 때 여전히 null을 반환하므로 드라이버 시작 전에 null 검사를 추가하는 것이 좋습니다. 동일한 옵션 객체에는 다른 곳에서 사용되는 인수(예: )도 포함됩니다. 브라우저 창을 최대화하거나 크기를 조정하기.

설정 방법 Firefox 프로필 기본 설정 Selenium

저장된 프로필은 전체 과정의 절반에 불과합니다. 대부분의 자동화 작업에는 코드에서 몇 가지 기본 설정을 적용해야 하며, 그래야 모든 머신에서 동일한 동작을 유지할 수 있습니다. setPreference 메서드는 이러한 값을 프로필 복사본에 기록합니다. Firefox 시작합니다.

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\selenium-downloads");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
profile.setPreference("dom.webnotifications.enabled", false);
profile.setPreference("intl.accept_languages", "es");

FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);

아래 설정은 일상적인 스크립팅에서 가장 자주 발생하는 경우를 다룹니다.

우선권 그것이 제어하는 ​​것
브라우저.다운로드.폴더목록 시스템 기본값 대신 사용자 지정 다운로드 폴더를 사용하려면 값을 2로 설정하십시오.
브라우저.다운로드.디렉터 절대 경로 Firefox 다운로드한 파일을 다음 위치에 저장합니다.
browser.helperApps.neverAsk.saveToDisk 다운로드 대화 상자를 표시하지 않고 MIME 형식을 저장합니다.
dom.webnotifications.enabled 웹 푸시 알림 메시지를 표시하지 않으려면 false로 설정하십시오.
국제 언어 수용 Accept-Language 헤더는 지역화 실행에 유용합니다.
일반.사용자 에이전트.재정의 브라우저에서 전송하는 사용자 에이전트 문자열을 대체합니다.

알아두면 유용한 두 가지 제한 사항이 있습니다. WebDriver는 실행 시 프로필을 복사하고 이후 변경 사항은 무시하기 때문에 드라이버가 생성되기 전에 환경 설정을 완료해야 합니다. 또한 WebDriver는 브라우저와의 통신에 필요한 몇 가지 환경 설정을 예약해 두고 있으며, 사용자가 어떤 값을 지정하든 해당 값을 덮어씁니다. 이러한 값은 스크립트가 아닌 프로필에 저장되므로 드라이버 실행 시에도 그대로 유지됩니다. 크로스 브라우저 테스트 테스트 코드를 변경하지 않고 실행합니다.

공통의 Firefox 프로필 오류 Selenium 그리고 그것을 고치는 방법

프로필 관련 문제는 일반적으로 컴파일 오류나 브라우저가 잘못된 설정으로 열리는 현상으로 나타납니다. 아래 표는 가장 자주 보고되는 오류와 각 오류의 원인을 나열합니다.

징후 원인 수정
생성자 Firefox운전사(Firefox프로필이 정의되지 않았습니다. 생성자는 그 후에 제거되었습니다. Selenium 2. 프로필을 감싸세요 Firefox옵션을 사용하고 옵션 객체를 전달하세요.
org.openqa.selenium.firefox.internal.ProfilesIni 가져오기를 해결할 수 없습니다. 해당 클래스가 내부 하위 패키지에서 분리되었습니다. org.openqa.selenium.firefox.ProfilesIni를 가져옵니다.
getProfile의 NullPointerException 프로필 이름이 profiles.ini 파일의 어떤 항목과도 ​​일치하지 않습니다. 프로필 관리자를 다시 열고 대소문자를 포함하여 이름을 정확하게 복사하세요.
너의 Firefox 프로필을 불러올 수 없습니다. 프로필이 없거나 접근할 수 없는 상태일 수 있습니다. 다른 Firefox 해당 인스턴스에 이미 프로필이 있거나 폴더 경로가 잘못되었습니다. 모두 닫기 Firefox 창을 열고 위에 나열된 위치와 경로를 비교하여 확인하십시오.
선호는 아무런 영향을 미치지 않습니다. 해당 값은 드라이버가 시작된 후에 설정되었거나 WebDriver가 예약한 값입니다. 모든 setPreference 호출을 위로 이동하세요. Firefox드라이버 생성자.

브라우저가 정상적으로 시작되지만 이후 스크립트 실행이 여전히 실패하는 경우, 프로필 문제는 아닐 가능성이 높습니다. 다음 단계를 진행해 보세요. 예외 처리 Selenium 그 지점에서 그쪽으로 가면 대개 더 빠른 길입니다.

자주 묻는 질문

그렇지 않습니다. FirefoxDriver는 기존 프로필을 절대 수정하지 않습니다. 프로필 디렉터리를 임시 위치로 복사하고, WebDriver에 필요한 설정을 적용한 다음, 해당 복사본에서 브라우저를 실행합니다. 따라서 저장된 북마크와 비밀번호는 그대로 유지됩니다.

예. 프로필에 설치된 모든 확장 프로그램은 브라우저와 함께 로드됩니다. 또한 실행 중에 확장 프로그램을 추가하려면 profile.addExtension(new File(“path/to/extension.xpi”))를 호출하여 디스크에 저장된 프로필을 깔끔하게 유지할 수 있습니다.

Python ProfilesIni에 해당하는 항목이 없습니다. 포인트 Firefox대신 프로필 디렉터리에 있는 프로필을 생성한 다음 드라이버를 빌드하기 전에 options.profile에 할당하십시오. Selenium Python 바인딩을 수행한 다음 해당 폴더를 정확히 복제합니다. Java 않습니다.

AI 기반 테스트 도구는 빌드에 성공한 실행에서 캡처된 기본 설정을 현재 프로필과 비교하여 프록시 또는 다운로드 폴더 변경과 같은 오류를 감지합니다. 일부 프레임워크는 빌드 실패를 방지하기 위해 머신 러닝을 사용하여 프로필 관련 불안정성을 미리 파악하기도 합니다.

GitHub 부조종사 기본 코드를 빠르게 생성하지만, 종종 제거된 내용을 출력합니다. Firefox운전사(Firefox프로필) 생성자는 이전 코드에서 학습되었습니다. 제안된 사용법을 항상 확인하세요. Firefox커밋하기 전에 옵션 설정(Options.setProfile)과 현재 패키지를 확인하세요.

네. options.setProfile(profile)과 함께 options.addArguments(“-headless”)를 호출하세요. 헤드리스 모드는 설정 방식만 변경하므로, profile은 이전과 마찬가지로 환경 설정과 확장 기능을 제공합니다. Firefox 렌더링 방식이지, 프로필 디렉토리를 읽는 방식이 아닙니다.

WebDriver는 임시 복사본을 사용하고 세션이 종료되면 해당 복사본을 삭제합니다. 변경 사항을 유지하려면 프로필 관리자에서 프로필을 수동으로 편집하거나 코드에서 설정을 지정하여 모든 실행이 동일한 알려진 상태에서 시작되도록 해야 합니다.

항상 그런 건 아니지만 도움이 됩니다. 프로필을 첨부하려면 Firefox옵션은 기능 페이로드와 함께 기본 설정을 전송하므로 원격 노드는 로컬 컴퓨터와 동일한 다운로드 폴더, 프록시 및 인증서 처리를 적용합니다.

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