9

Homebrew Beczek robi magiczne połączenie aplikacji na Mac OS X. Najwyraźniej nie jest to wystarczająco dobre, ponieważ Selenium WebDriver szukający pliku wykonywalnego Firefox nie może go znaleźć. Poniżej znajduje się komunikat o błędzie z testu RSpec z Capybara kierowaniem Selenem.Selenium WebDriver nie może znaleźć Firefoksa po zainstalowaniu z baską Homebrew

Jaki jest dobry sposób na wskazanie lokalizacji pliku wykonywalnego przeglądarki Firefox?

Failure/Error: Unable to find matching line from backtrace 
Selenium::WebDriver::Error::WebDriverError: 
    Could not find Firefox binary (os=macosx). Make sure Firefox is installed or set the path manually with Selenium::WebDriver::Firefox::Binary.path= 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:127:in `path' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:60:in `execute' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/binary.rb:34:in `start_with' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:70:in `start_silent_and_wait' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:35:in `block in launch' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/socket_lock.rb:20:in `locked' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/firefox/bridge.rb:24:in `initialize' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/driver.rb:31:in `new' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/driver.rb:31:in `for' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver.rb:67:in `for' 
# /Users/mende/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/capybara-2.4.4/lib/capybara/selenium/driver.rb:13:in `browser' 
+0

Czy zainstalowany jest FF? –

+0

Jak mówi tytuł, FF jest instalowany przez beczkę Homebrew. Działa dobrze jako aplikacja na Maca, ale jego plik wykonywalny nie jest wykrywalny przez Selenium-WebDriver. – Sim

Odpowiedz

19

Jako msg błędzie mówi: Musisz określić Selenium::WebDriver::Firefox::Binary.path ścieżek niestandardowych aplikacji.

# in spec_helper.rb 
require 'selenium/webdriver' 

Selenium::WebDriver::Firefox::Binary.path = 
    "/opt/homebrew-cask/Caskroom/Firefox/latest/Firefox.app/Contents/MacOS/firefox" 

Jeśli nie chcą dotykać ramy testowej, można zainstalować Firefoksa /Applications (Domyślna ścieżka poszukiwań dla selenu), aby pracować bez ustawiania Binary.path.

brew cask install --appdir="/Applications" firefox 
+0

Szukałem poprawki po stronie beczki, ale wygląda na to, że żadna nie nadejdzie wkrótce, więc przyjmuję tę odpowiedź. – Sim

+2

Zaktualizowałem moją odpowiedź, jak zainstalować firefox w domyślnym katalogu (co jest poprawką "po stronie beczki", której szukasz). – Markus

+0

Nice! Domyślną podstawą dla tej odpowiedzi jest domyślnie dowiązanie plików binarnych do '/ Users//Applications', ale sterownik selenu szuka w całym systemie'/Applications', ponieważ jest to standardowa domyślna ścieżka instalacji dla GUI aplikacje. –

4

Właśnie dodałem kod dla Selenium, aby wyszukać ten katalog specjalnie, bez potrzeby ustawiania go lub zmieniania aplikacji. Będzie on dostępny w klejnotach selen-webdriver 2.49+

+0

To świetnie; dzięki. – Sim