2012-07-03 27 views
5

Khi tôi chạy thử nghiệm bằng cách sử dụng selen, các trình duyệt liên tục bật lên cho biết bạn không thể tìm thấy cấu hình firefox. Tôi đã chuẩn bị một hồ sơ Firefox để sử dụng với selen Tôi chỉ không chắc chắn làm thế nào để nói cho selen nơi mà hồ sơ nằm.selenium/capybara - Không thể tải hồ sơ Firefox

Làm thế nào để tôi cho Selenium biết cấu hình firefox nào sẽ sử dụng?

Trả lời

4

Tôi đã nhận được lỗi tương tự này. Đối với tôi, hóa ra là cuộc gọi đến số save_and_open_page trong thử nghiệm của tôi đã gây ra sự cố. Tôi đã xóa các lỗi đó và các lỗi hồ sơ trên Firefox đã dừng.

Tôi chưa có bất kỳ nhu cầu nào cho tiểu sử Firefox đặc biệt chỉ dành cho capybara/selenium, nhưng để trả lời câu hỏi của bạn kỹ lưỡng hơn, trong việc cố gắng giải quyết vấn đề này hồ sơ cho Firefox.

Lưu ý: Cả hai cách này thực sự không giải quyết được sự cố của tôi với lỗi tiểu sử nhưng tôi vẫn bao gồm chúng ở đây, vì bạn đã hỏi.

Phương pháp 1: (. Yêu cầu mỗi nhà phát triển dự án để thiết lập hồ sơ đặc biệt trong Firefox)

Thêm dòng sau vào test_helper.rb bạn

Capybara.register_driver :my_firefox_driver do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => 'name_of_existing_profile') 
end 

Cách 2: (Không yêu cầu mỗi nhà phát triển trong dự án thiết lập hồ sơ đặc biệt trong Firefox.)

Thêm như sau để helper.rb thử nghiệm của bạn

require 'selenium-webdriver' 

... 

    Capybara.register_driver :my_firefox_driver do |app| 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile) 
    end 

Sau đó, bất kể là ở trên bạn chọn phương pháp, thiết lập trình điều khiển mặc định của bạn để người lái xe mới, hoặc chọn lọc sử dụng trình điều khiển mới bằng cách đặt Capybara.current_driver = :my_firefox_driver vào đầu xét nghiệm của bạn và đảm bảo rằng test_helper.rb của bạn bao gồm một nhiệm vụ teardown để Capybara.use_default_driver mà nó nên nếu bạn làm theo các hướng dẫn thiết lập.

+0

Cảm ơn vì điều đó! Tôi đã quản lý để hiển thị cho tôi trang (save_and_open_page) hoạt động bằng cách đặt chrome làm trình duyệt mặc định của tôi. Vì vậy, bây giờ nó chạy tất cả các bài kiểm tra trên FF và hiển thị các trang đã lưu trên Chrome. – vas

1

Để làm điều này trong Ruby yêu cầu rất nhiều điều tra nhưng tôi đã nhận nó để làm việc.

Trước tiên, hãy khởi động Firefox bằng cờ -p để chọn tiểu sử. Tạo một hồ sơ mới và lưu nó vào một nơi trong dự án của bạn. Trong trường hợp của tôi trong thư mục "firefox_profile". Sau đó bạn cần phải cung cấp cho Selenium một gợi ý về nơi để tìm thấy hồ sơ này và để làm điều đó bạn khỉ có thể vá các layout_on_disk phương pháp:

module Selenium 
    module WebDriver 
    module Firefox 
     class Profile 
     def layout_on_disk 
      firefox_profile = File.expand_path(File.join(File.dirname(__FILE__),'firefox_profile')) 
      profile_dir = create_tmp_copy(firefox_profile) 
      FileReaper << profile_dir 

      install_extensions(profile_dir) 
      delete_lock_files(profile_dir) 
      delete_extensions_cache(profile_dir) 
      update_user_prefs_in(profile_dir) 

      puts "Using temporary Firefox profile in: #{profile_dir} from #{firefox_profile}" 
      profile_dir 
     end 
     end 
    end 
    end 
end 

As Gist here

0

Tôi cũng trúng vấn đề này và nó bật ra được không liên quan đến hồ sơ Firefox. Trong trường hợp của tôi, đó là sự không tương thích của classpath giữa phiên bản Ghostdriver mà tôi đang sử dụng cho PhantomJS và phiên bản Selenium tôi đang sử dụng cho FirefoxDriver (tôi đã cố thiết lập mã của mình để cho phép cả hai). Loại bỏ sự phụ thuộc Ghostdriver và bình luận ra mã PhantomJS khiến lỗi hồ sơ này biến mất. Thực sự, nếu tôi đã đọc các thông báo lỗi nó đã cho tôi chặt chẽ hơn, tôi đã thấy rằng nguyên nhân gốc rễ của lỗi hồ sơ là một phương pháp còn thiếu do sự không tương thích của lớp. Lỗi cụ thể là:

NoSuchMethodError: org.openqa.selenium.os.CommandLine.waitFor (J) V

+1

Tại sao lại là downvote? Tôi đã có các triệu chứng tương tự như tác giả câu hỏi ban đầu mặc dù nguyên nhân gốc rễ là khác nhau. Tôi đã tìm thấy Câu hỏi này trong tìm kiếm của mình và nghĩ rằng những người khác cũng vậy. Tôi có thể hiểu không upvoting, nhưng bạn có thực sự nghĩ rằng nó đau để có câu trả lời của tôi? Tôi thừa nhận rằng đọc cẩn thận là giải pháp tối thượng, nhưng tôi không nghĩ rằng tôi đang một mình trong googling cho một giải pháp cho vấn đề trong hộp popup, so với bỏ qua rằng popup là sai và tìm kiếm một tin nhắn trong các bản ghi. –

0

Tôi gặp phải lỗi này sau khi cập nhật Firefox.

Tôi đã mở Firefox theo cách thủ công, để cho phép ứng dụng này cập nhật, sau đó các thử nghiệm đã hoạt động sau đó.

Các vấn đề liên quan