Selenium Firefox 프로필: 설정 가이드
⚡ 스마트 요약
Firefox 프로필에는 한 브라우저 사용자의 북마크, 비밀번호, 추가 기능 및 환경 설정이 저장됩니다. Selenium WebDriver는 전용 프로필을 로드하여 모든 자동화 실행이 동일하고 예측 가능한 브라우저 상태에서 시작되도록 할 수 있습니다.
Selenium Firefox 프로필
Firefox 프로필은 웹사이트에서 수행할 수 있는 설정, 사용자 정의, 추가 기능 및 기타 개인화 설정의 모음입니다. Firefox Browser. 사용자 정의할 수 있습니다. Firefox 당신에게 어울리는 프로필 Selenium 자동화 요구 사항.
또한, Firefox 또는 다른 브라우저가 SSL 인증서 설정을 처리합니다. 따라서 이를 자동화하는 것은 테스트 실행 코드와 함께 많은 의미가 있습니다.
간단히 말해 프로필은 사용자의 개인 설정입니다. 안정적인 실행을 원할 때 자동화 에 Firefox 브라우저를 사용하는 경우 별도의 프로필을 만드는 것이 좋습니다. 전용 프로필을 사용하면 일상적인 검색 데이터가 테스트 실행에 포함되지 않으므로, 테스트 실행 시 가장 먼저 확인해야 할 사항입니다. Selenium 스크립트가 두 컴퓨터에서 다르게 동작합니다.
디스크의 프로필 폴더 위치
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를 입력합니다.
확인 버튼을 누르기 전에 실행 대화 상자가 아래 스크린샷과 같이 표시되어야 합니다.
참고: 만약 열리지 않으면 전체 경로를 따옴표로 묶어서 시도해 보세요.
- 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 아래 그림과 같이 열립니다.
단계 4) 프로필 만들기
다음 스크린샷에 표시된 '프로필 생성' 옵션을 선택하여 마법사를 시작하세요.
이제 창에서 프로필 만들기 옵션을 선택하면 마법사가 열립니다. 다음을 클릭하세요.
단계 5) 프로필 이름을 입력하세요.
아래 강조 표시된 필드에 자동화 프로필의 이름을 입력하고 마법사를 완료하세요.
이제 프로필이 준비되었습니다. 프로필을 선택하고 열 수 있습니다. 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
첫 번째 예제는 이름으로 프로필을 불러옵니다. 아래 스크린샷은 편집기 내에서 동일한 스크립트가 실행되는 모습을 보여줍니다.
// 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 파일을 건너뛰고 편집기 스크린샷에서 볼 수 있듯이 프로필 폴더를 직접 지정합니다.
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 그 지점에서 그쪽으로 가면 대개 더 빠른 길입니다.







