Selenium Firefox Hồ sơ: Hướng dẫn thiết lập

⚡ Tóm tắt thông minh

Firefox Hồ sơ người dùng lưu trữ dấu trang, mật khẩu, tiện ích bổ sung và tùy chọn thuộc về một người dùng trình duyệt cụ thể, và Selenium WebDriver có thể tải một cấu hình chuyên dụng để mỗi lần chạy tự động đều bắt đầu từ một trạng thái trình duyệt giống hệt nhau và có thể dự đoán được.

  • 🔘 Thông tin cơ bản về hồ sơ: A Firefox Hồ sơ người dùng chứa dấu trang, mật khẩu đã lưu, tiện ích bổ sung, chứng chỉ và tùy chọn của người dùng trong một thư mục duy nhất.
  • ☑️ Vị trí hồ sơ: Windows, Linux và macOS Mỗi thư mục hồ sơ cửa hàng nằm dưới một đường dẫn khác nhau bên trong thư mục người dùng.
  • Tạo hồ sơ: Trình quản lý hồ sơ tích hợp sẵn được mở bằng lệnh firefox.exe -p và xây dựng một hồ sơ tự động hóa sạch sẽ trong năm bước.
  • 🧪 Code truy cập: Lớp ProfilesIni đọc tệp profiles.ini, và phương thức getProfile trả về cấu hình được đặt tên dưới dạng một đối tượng. FirefoxĐối tượng hồ sơ.
  • 🛠️ Cú pháp hiện tại: Selenium 3 và 4 truyền hồ sơ qua FirefoxOptions.setProfile thay vì FirefoxTrình tạo trình điều khiển.
  • ⚠️ Ưu đãi: Tham số `setPreference` kiểm soát thư mục tải xuống, thông báo, ngôn ngữ và việc xử lý chứng chỉ trước khi trình duyệt khởi chạy.

Selenium Firefox Hướng dẫn thiết lập hồ sơ

Selenium Firefox Hồ Sơ

Firefox profile là tập hợp các cài đặt, tùy chỉnh, tiện ích bổ sung và các cài đặt cá nhân hóa khác có thể được thực hiện trên Firefox Browser. Bạn có thể tùy chỉnh Firefox hồ sơ phù hợp với bạn Selenium yêu cầu tự động hóa.

Cũng thế, Firefox hoặc bất kỳ trình duyệt nào khác xử lý cài đặt chứng chỉ SSL. Vì vậy, việc tự động hóa chúng cùng với mã thực thi kiểm thử có rất nhiều ý nghĩa.

Tóm lại, hồ sơ là các thiết lập cá nhân của người dùng. Khi bạn muốn vận hành một hệ thống đáng tin cậy... tự động hóa trên Firefox Đối với trình duyệt này, bạn nên tạo một hồ sơ riêng biệt. Hồ sơ chuyên dụng cũng giúp tách biệt dữ liệu duyệt web hàng ngày của bạn khỏi quá trình chạy thử nghiệm, đây là điều đầu tiên cần loại trừ khi chạy thử nghiệm. Selenium Tập lệnh hoạt động khác nhau trên hai máy.

Vị trí thư mục hồ sơ của bạn trong đĩa

Firefox hồ sơ giống như những người dùng khác nhau sử dụng Firefox. Firefox Lưu trữ thông tin cá nhân như dấu trang, mật khẩu và tùy chọn người dùng, có thể được chỉnh sửa, xóa hoặc tạo mới bằng trình quản lý hồ sơ.

Ảnh chụp màn hình bên dưới hiển thị thư mục hồ sơ như nó xuất hiện trên ổ đĩa, được đặt tên theo hồ sơ với một tiền tố ngẫu nhiên.

Firefox Thư mục hồ sơ được hiển thị trên ổ đĩa với tiền tố ngẫu nhiên của nó.

Vị trí hồ sơ như sau

  • Trong cáp Windows > C:\Users\ \AppData\Roaming\Mozilla\Firefox\Profiles\profile_name.default
  • Trong cáp Linux > ~/.mozilla/firefox/profile_name.default/
  • Đối với Mac OS X > ~/Library/Application Support/Firefox/Hồ sơ/profile_name.default/

Để chạy thành công Selenium Kiểm tra, một Firefox hồ sơ nên là –

  • Dễ dàng tải
  • Cài đặt proxy nếu được yêu cầu
  • Các cài đặt dành riêng cho người dùng khác dựa trên nhu cầu tự động hóa

Làm thế nào để thiết lập Firefox Hồ sơ cho Selenium Kiểm tra

Chúng ta hãy cùng xem từng bước cách tạo ra một Firefox Hồ sơ.

Bước 1) Đóng Firefox trình duyệt

Bước đầu tiên, hãy đóng lại. Firefox nếu nó đã được mở sẵn. Trình quản lý hồ sơ sẽ không khởi động trong khi... Firefox Cửa sổ đang chạy.

Bước 2) Mở Chạy (Windows phím + R) và nhập firefox.exe –p

Trước khi nhấn OK, hộp thoại Run sẽ trông giống như ảnh chụp màn hình bên dưới.

Windows Mở hộp thoại với lệnh firefox.exe -p được nhập vào.

Lưu ý: Nếu không mở được, bạn có thể thử sử dụng đường dẫn đầy đủ được đặt trong dấu ngoặc kép.

  • Trên hệ điều hành 32 bit Windows: “C:\Program Files\Mozilla Firefox\firefox.exe” –p
  • Trên hệ điều hành 64 bit Windows (32-bit Firefox): “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p

Bước 3) Chọn hồ sơ người dùng

Bây giờ, một hộp thoại có tên Firefox sẽ mở ra như hình bên dưới.

Firefox Chọn hộp thoại Hồ sơ người dùng để hiển thị danh sách các hồ sơ hiện có.

Bước 4) Tạo hồ sơ

Chọn tùy chọn Tạo hồ sơ như trong ảnh chụp màn hình tiếp theo để bắt đầu trình hướng dẫn.

Màn hình chào mừng của Trình hướng dẫn Tạo Hồ sơ trong Firefox quản lý hồ sơ

Bây giờ, chọn tùy chọn Tạo hồ sơ từ cửa sổ và trình hướng dẫn sẽ mở ra. Bấm vào tiếp theo.

Bước 5) Đặt tên hồ sơ của bạn

Nhập tên cho hồ sơ tự động hóa vào ô được tô sáng bên dưới và hoàn tất trình hướng dẫn.

Bước vào một thế giới mới Firefox tên hồ sơ trong Trình tạo hồ sơ

Bây giờ hồ sơ của bạn đã sẵn sàng, bạn có thể chọn hồ sơ của mình và mở FirefoxTừ đây, hồ sơ hoạt động giống như bất kỳ phiên trình duyệt nào khác, vì vậy... kịch bản WebDriver đầu tiên sẽ chạy ngược lại với nó mà không có gì thay đổi.

Bạn sẽ nhận thấy rằng cái mới Firefox cửa sổ sẽ không hiển thị bất kỳ biểu tượng Dấu trang và Yêu thích nào của bạn.

Lưu ý: Hồ sơ được chọn lần cuối sẽ tự động tải ở lần tiếp theo. Firefox phóng. Bạn sẽ cần phải khởi động lại trình quản lý hồ sơ nếu muốn thay đổi hồ sơ.

Tập lệnh tự động hóa cho Selenium

Sau khi tạo hồ sơ, bước tiếp theo là tải nó từ mã. Để truy cập vào hồ sơ mới được tạo Firefox hồ sơ trong một Selenium Để kiểm thử phần mềm WebDriver, chúng ta cần sử dụng lớp ProfilesIni tích hợp sẵn của WebDriver và phương thức getProfile của nó như được hiển thị bên dưới.

⚠️ Lưu ý về phiên bản: Các đoạn trích trong phần này là bản gốc. Selenium Dạng 2. Hiện tại Selenium phát hành lớp học sống trong org.openqa.selenium.firefox.ProfilesIni - Các .nội bộ Gói phụ đã bị loại bỏ — và hồ sơ được chuyển cho người lái xe thông qua FirefoxCác tùy chọn. Xem FirefoxPhần Tùy chọn ở bên dưới cung cấp thông tin về phiên bản hiện đại tương đương.

Selenium mã hồ sơ

Đây là mã để triển khai một cấu hình, có thể được nhúng vào Selenium Mã.

ProfilesIni profile = new ProfilesIni();

// điều này sẽ tạo ra một đối tượng cho Firefox Hồ sơ

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

// điều này sẽ khởi tạo Firefox trình điều khiển

WebDriver driver = new FirefoxDriver(myprofile)

Chúng ta hãy xem cách triển khai đoạn mã này trong các ví dụ sau.

Firefox Hồ sơ Ví dụ 1

Ví dụ đầu tiên tải hồ sơ theo tên. Ảnh chụp màn hình bên dưới hiển thị cùng một đoạn mã đó bên trong trình chỉnh sửa.

Firefox Ví dụ về hồ sơ 1: Tập lệnh tải hồ sơ theo tên trong trình chỉnh sửa

// 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();
}

}

Giải thích về mã

Dưới đây là giải thích từng dòng mã.

  • Code dòng 2-7: Trước hết, chúng ta cần nhập gói cần thiết để chạy chương trình. Selenium Mã.
  • Code dòng 8: Tạo một lớp công khai “FirefoxHồ sơ."
  • Code Dòng 9: Tạo một đối tượng (bạn cần có kiến ​​thức cơ bản về các khái niệm lập trình hướng đối tượng).
  • Code dòng 10-11: Chúng ta cần khởi tạo Firefox Hồ sơ với đối tượng là myprofile.
  • Code dòng 13: Tạo đối tượng cho Firefox.
  • Code Dòng 15: Phóng to cửa sổ.
  • Code dòng 17: driver.get được sử dụng để điều hướng đến vị trí đã cho URL.
  • Code Dòng 19: Lệnh set timeout được sử dụng để chờ một khoảng thời gian để trình duyệt tải trang trước khi chuyển sang trang tiếp theo.
  • Code dòng 21: Đóng Firefox.

Chúng ta hãy xem thêm một ví dụ nữa.

Firefox Hồ sơ Ví dụ 2

Ví dụ thứ hai bỏ qua tệp profiles.ini và trỏ trực tiếp đến thư mục hồ sơ, như ảnh chụp màn hình trình chỉnh sửa cho thấy.

Firefox Ví dụ hồ sơ 2, kịch bản trỏ đến FirefoxHồ sơ tại đường dẫn thư mục

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();
    }

Giải thích về mã

Dưới đây là giải thích từng dòng mã.

  • Code dòng 1-6: Trước hết, chúng ta cần nhập gói cần thiết để chạy chương trình. Selenium Mã.
  • Code dòng 8: Tạo một lớp công khai FirefoxHồ sơ 2.
  • Code Dòng 12: Tạo đối tượng của myprofile bằng cách tham chiếu đến đường dẫn chính xác.
  • Code dòng 14: Tạo đối tượng cho Firefox.
  • Code Dòng 16: Phóng to cửa sổ.
  • Code dòng 18: driver.get được sử dụng để điều hướng đến vị trí đã cho URL.
  • Code Dòng 20: Lệnh set timeout được sử dụng để chờ một khoảng thời gian để trình duyệt tải trang trước khi chuyển sang trang tiếp theo.
  • Code dòng 22: Đóng Firefox.

Lưu ý rằng đường dẫn trong đoạn mã này được viết chính xác như hướng dẫn gốc. Trên máy thật, các dấu gạch chéo ngược phải được thoát, ví dụ: “C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xyzProfile.default”.

Cách sử dụng Firefox Cấu hình trong Selenium 4 với FirefoxTùy chọn

Cả hai ví dụ trên đều chỉ biên dịch được khi sử dụng... Selenium 2. Sau đó có hai thay đổi, và mọi hướng dẫn hiện tại đều sử dụng hình thức mới hơn.

  • ProfilesIni đã chuyển ra khỏi nội bộ gói con, vì vậy lệnh nhập khẩu hiện là org.openqa.selenium.firefox.ProfilesIni.
  • FirefoxTài xế(FirefoxHàm tạo (Profile) đã bị xóa. Hồ sơ được đính kèm vào một FirefoxĐối tượng tùy chọn và đối tượng tùy chọn này được truyền cho trình điều khiển.
  • Selenium 4 lần chờ sẽ lấy một java.time.Duration thay vì một giá trị cộng với một TimeUnit, vì vậy implicitlyWait(5, TimeUnit.SECONDS) trở thành implicitlyWait(Duration.ofSeconds(5)).

Bảng dưới đây thể hiện sự tương ứng giữa mỗi lệnh gọi cũ và lệnh gọi thay thế tương ứng.

Cuộc gọi cũ (Selenium 2) Cuộc gọi hiện tại (Selenium 3 và 4)
import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.firefox.ProfilesIni;
người mới FirefoxTài xế (hồ sơ của tôi) tùy chọn.setProfile(myprofile); mới FirefoxNgười lái xe (tùy chọn)
implicitlyWait(5, TimeUnit.SECONDS) implicitlyWait(Duration.ofSeconds(5))
System.setProperty cho geckodriver Đã được giải quyết tự động bởi Selenium Quản Lý

Khi được viết lại dựa trên phiên bản hiện tại, Ví dụ 1 trông như thế này.

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();
    }
}

Quá trình tìm kiếm hồ sơ vẫn không thay đổi: ProfilesIni vẫn đọc profiles.ini từ... Firefox Thư mục application-data và phương thức getProfile vẫn trả về null khi tên không khớp với hồ sơ, vì vậy nên thêm kiểm tra null trước khi trình điều khiển khởi chạy. Đối tượng tùy chọn tương tự cũng chứa các đối số được sử dụng ở những nơi khác, chẳng hạn như các đối số cho Phóng to hoặc thu nhỏ cửa sổ trình duyệt.

Làm thế nào để thiết lập Firefox Tùy chọn hồ sơ trong Selenium

Việc lưu hồ sơ chỉ là một nửa câu chuyện. Hầu hết các hệ thống tự động hóa cần một số tùy chọn được áp dụng trong mã để đảm bảo cùng một hành vi được áp dụng cho toàn bộ hệ thống trên mọi máy. Phương thức setPreference sẽ ghi các giá trị đó vào bản sao hồ sơ trước khi thực hiện. Firefox ra mắt.

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);

Các tùy chọn dưới đây bao gồm những trường hợp thường gặp nhất trong quá trình viết kịch bản hàng ngày.

Sở thích Những gì nó kiểm soát
browser.download.folderList Đặt thành 2 để sử dụng thư mục tải xuống tùy chỉnh thay vì thư mục mặc định của hệ thống.
trình duyệt.tải xuống.thư mục Con đường tuyệt đối Firefox lưu các tệp tải xuống vào.
browser.helperApps.neverAsk.saveToDisk Các loại MIME được lưu mà không hiển thị hộp thoại tải xuống.
dom.webnotifications.enabled Đặt thành false để tắt thông báo đẩy trên web.
intl.accept_languages Tiêu đề Accept-Language, hữu ích cho các lần chạy bản địa hóa.
chung.useragent.override Thay thế chuỗi user agent do trình duyệt gửi đi.

Có hai giới hạn cần lưu ý. Các tùy chọn phải được thiết lập trước khi trình điều khiển được tạo, vì WebDriver sao chép hồ sơ khi khởi chạy và các thay đổi sau đó sẽ bị bỏ qua. WebDriver cũng dành riêng một tập hợp nhỏ các tùy chọn cần thiết để giao tiếp với trình duyệt và nó sẽ ghi đè lên những tùy chọn đó bất kể bạn gán giá trị nào. Vì các giá trị đó nằm trong hồ sơ chứ không phải trong tập lệnh, chúng cũng được truyền đi. thử nghiệm trình duyệt chéo Chạy mà không cần thay đổi mã kiểm thử.

Chung Firefox Lỗi hồ sơ trong Selenium và Cách Sửa Chữa Chúng

Các sự cố về cấu hình thường xuất hiện dưới dạng lỗi biên dịch hoặc trình duyệt mở với cài đặt không chính xác. Bảng dưới đây liệt kê các lỗi được báo cáo thường xuyên nhất, cùng với nguyên nhân gây ra từng lỗi.

Triệu chứng Nguyên nhân Sửa chữa
Người xây dựng FirefoxTài xế(FirefoxHồ sơ) chưa được xác định Hàm khởi tạo đã bị xóa sau đó Selenium 2. Bọc hồ sơ trong FirefoxCác tùy chọn và thay vào đó hãy truyền đối tượng tùy chọn.
Không thể giải quyết việc nhập khẩu org.openqa.selenium.firefox.internal.ProfilesIni Lớp này đã được chuyển ra khỏi gói con nội bộ. Nhập org.openqa.selenium.firefox.ProfilesIni.
NullPointerException trên getProfile Tên hồ sơ không khớp với bất kỳ mục nào trong profiles.ini. Mở lại trình quản lý hồ sơ và sao chép chính xác tên, bao gồm cả chữ hoa và chữ thường.
trên màn hình Firefox Không thể tải hồ sơ. Hồ sơ có thể bị thiếu hoặc không thể truy cập. Một Firefox Tệp tin cấu hình đã tồn tại hoặc đường dẫn thư mục bị sai. Đóng mọi thứ lại Firefox Sau đó, mở cửa sổ và kiểm tra đường dẫn xem có khớp với các vị trí đã liệt kê ở trên hay không.
Sự ưu tiên không có tác dụng Tham số này được thiết lập sau khi trình điều khiển khởi động, hoặc WebDriver sẽ giữ chỗ cho tham số đó. Di chuyển mọi lệnh gọi setPreference lên trên lệnh FirefoxTrình tạo trình điều khiển.

Nếu trình duyệt khởi động bình thường nhưng sau đó tập lệnh vẫn bị lỗi, thì có lẽ cấu hình không phải là nguyên nhân. Đang xử lý... xử lý ngoại lệ trong Selenium Đó thường là tuyến đường nhanh hơn từ điểm đó.

Câu Hỏi Thường Gặp

STT FirefoxWebDriver không bao giờ chỉnh sửa hồ sơ người dùng đã tồn tại. Nó sao chép thư mục hồ sơ vào một vị trí tạm thời, áp dụng các tùy chọn mà WebDriver yêu cầu và khởi chạy trình duyệt từ bản sao đó, do đó dấu trang và mật khẩu đã lưu của bạn vẫn không bị ảnh hưởng.

Đúng vậy. Bất kỳ tiện ích mở rộng nào được cài đặt trong hồ sơ đều được tải cùng với trình duyệt. Bạn cũng có thể gọi profile.addExtension(new File(“path/to/extension.xpi”)) để gắn thêm một tiện ích mở rộng trong quá trình chạy, điều này giúp giữ cho hồ sơ trên đĩa luôn sạch sẽ.

Python Không có tệp tương đương trong ProfilesIni. Điểm FirefoxHãy tạo hồ sơ tại thư mục hồ sơ, sau đó gán nó cho options.profile trước khi biên dịch trình điều khiển. Selenium Python Sau đó sao chép thư mục đó chính xác như sau: Java không.

Các công cụ kiểm thử hỗ trợ AI so sánh các thiết lập ưu tiên được ghi nhận trong các lần chạy thành công với cấu hình hiện tại và phát hiện sự thay đổi cờ, chẳng hạn như máy chủ proxy hoặc thư mục tải xuống đã thay đổi. Một số framework cũng sử dụng máy học để phát hiện sự không ổn định liên quan đến cấu hình trước khi nó gây lỗi trong quá trình xây dựng.

Trợ lý GitHub Nó tạo ra đoạn mã mẫu nhanh chóng, nhưng thường phát sinh cả phần đã bị xóa. FirefoxTài xế(FirefoxHàm tạo (Profile) được học từ mã cũ. Luôn xác nhận đề xuất sử dụng FirefoxKiểm tra Options.setProfile và gói hiện tại trước khi lưu lại.

Vâng. Gọi options.addArguments(“-headless”) cùng với options.setProfile(profile). Hồ sơ cung cấp các tùy chọn và tiện ích mở rộng chính xác như trước, vì chế độ headless chỉ thay đổi cách thức hoạt động. Firefox Cách hiển thị không phải là cách nó đọc thư mục hồ sơ của nó.

Vì WebDriver hoạt động trên một bản sao tạm thời và xóa nó khi phiên làm việc kết thúc. Để lưu giữ các thay đổi, hãy chỉnh sửa hồ sơ theo cách thủ công trong trình quản lý hồ sơ hoặc thiết lập các tùy chọn trong mã để mỗi lần chạy đều bắt đầu từ cùng một trạng thái đã biết.

Không phải lúc nào cũng vậy, nhưng nó có ích. Đính kèm hồ sơ vào FirefoxCác tùy chọn gửi các thiết lập ưu tiên cùng với gói dữ liệu về khả năng, do đó, một nút từ xa sẽ áp dụng cùng thư mục tải xuống, máy chủ proxy và cách xử lý chứng chỉ như máy cục bộ của bạn.

Tóm tắt bài viết này với: