2013-01-22 13 views
5

Tôi làm cách nào để sử dụng Selenium với Java bằng một Cấu hình Firefox tùy chỉnh?Cách sử dụng Hồ sơ Firefox tùy chỉnh với Selenium? (Java) (Và vượt qua Cửa sổ Ủy quyền HTML)

+1

Bạn đã kiểm tra http://garbuz.com/2010/07/31/running-selenium- với-custom-firefox-profile/và http://luhman.org/blog/2010/03/26/using-custom-firefox-profile-when-running-selenium-tests etc? – Swapnil

+0

@Swapnil Tôi đã hỏi câu hỏi này chỉ để thêm một số thông tin vào StackOverflow. Cảm ơn. –

Trả lời

6

Tôi đã dành một ngày cố gắng thực hiện việc này và quyết định chia sẻ tại đây. Có một số thông tin trên web cũng nhưng hầu hết trong số đó là một chút phức tạp hoặc không được cập nhật ...

Here is my configuration: 
Firefox version: 12 
Selenium version: 2.25 
Language: Java 
Computer: Macintosh 
  1. Mở Terminal
  2. loại: /Applications/Firefox.app/Contents/ MacOS/firefox-bin -p (thay đổi đường dẫn khi cần thiết)
  3. Tạo một cấu hình mới, lưu nó vào một thư mục như bạn muốn.
  4. Bắt đầu firefox với cấu hình này, thêm bất kỳ addons, sửa đổi nào bạn muốn.
  5. Trong Selenium, sử dụng:

FirefoxBinary binary = new FirefoxBinary(); 
File firefoxProfileFolder = new 
File("/Users/xxx/work/xxx/selenium/src/test/resources/firefoxprofile"); 
FirefoxProfile profile = new FirefoxProfile(firefoxProfileFolder); 
profile.setAcceptUntrustedCertificates(true); 
webDriver = new FirefoxDriver(binary, profile); 

Một lần nữa ở đây thay đổi đường dẫn tuyệt đối theo yêu cầu. Add add-ons như autoAuth để vượt qua các cửa sổ HTML Authorization trong Firefox cho profile này ..

+2

Bạn đã cứu ngày của tôi :) Tôi ước tôi có thể cung cấp cho 10 upvotes. –

4

Đối với Windows, để tạo ra một hồ sơ Firefox mới, gõ:

firefox -profilemanager 

trong Run mà sẽ mở Firefox Trình quản lý hồ sơ.

Hãy nói rằng bạn đã tạo ra một hồ sơ cá nhân gọi là Selenium, sau đó bạn có thể sử dụng đoạn mã sau:

ProfilesIni listProfiles = new ProfilesIni(); 
FirefoxProfile profile = listProfiles.getProfile("Selenium"); 
WebDriver driver = new FirefoxDriver(profile);