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.
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.
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.
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.
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.
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â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.
// 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.
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 đó.







