2012-03-28 96 views
14

我想爲WebDriver所以我用下面的代碼配置代理服務器設置....如何讓火狐與硒的webdriver工作在Mac OSX

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("network.proxy.type", 1); 
profile.setPreference("network.proxy.http","207.229.122.162"); 
profile.setPreference("network.proxy.http_port", 3128); 
WebDriver driver = new FirefoxDriver(profile); 
selenium = new WebDriverBackedSelenium(driver, "http://www.example.com/"); 

,並在文件上執行我運行後我越來越喜歡例外...

org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH.

Make sure firefox is installed. OS appears to be: MAC

System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.6.8',

java.version: '1.6.0_29'

Driver info: driver.version: FirefoxDriver

誰能幫我出關於如何以及在哪裏給路徑firefoxprofile()

+0

WebDriver無法找到Firefox的二進制文件路徑。你確定Firefox已安裝嗎? – p0deje 2012-03-28 12:34:16

+4

@ p0deje:當然是!並且我現在也在使用它... – Aspirant 2012-03-28 12:39:29

回答

17

我相信你有幾種選擇:

要麼在您的PATH系統變量中指定文件夾(您的Firefox二進制文件) - here's how

或致電

WebDriver driver = new FirefoxDriver(new FirefoxBinary(new File("path/to/your/firefox.exe")), profile); 
+0

此外,爲了避免硬編碼路徑,可以使用某種配置文件,例如[java.util.Properties](http://docs.oracle.com/javase /7/docs/api/java/util/Properties.html)。 – 2012-03-28 12:50:51

+0

嘿Slanec感謝您的代碼!我試過了,mozilla在windows中打開!但問題是執行像selenium.open(「dummy.com」)這樣的操作時; firefox正在彈出,但出現如下錯誤: 線程「main」中的異常java.lang.NoSuchMethodError:com.google.common.collect.Maps.transformValues(Ljava/util/Map; Lcom/google/common/base/Function; )Ljava/util的/地圖; 任何想法這個例外是什麼? – Aspirant 2012-03-28 14:07:47

+0

嘗試'selenium.open(「http://dummy.com」);' - 這是與http前綴。或者,如果您使用WebDriver,那麼'driver.get(「http://dummy.com」);' – 2012-03-28 14:19:18

1

我遇到過這個問題,這是很容易解決的。

on Windows,修改環境變量,將firefox path添加到PATH變量。

它應該是類似的的Mac,只是出口PATH=/my/firefox/path/bin:$PATH在您的配置文件。

+1

FF也可以按用戶安裝,而不是系統範圍內 – mcintyre321 2012-11-30 10:54:33

+0

On Windo ws,將Firefox(便攜版)加入PATH並沒有解決任何問題。我製作了這個BAT文件,'set PATH =%PATH%; C:\ Utils \ FirefoxPortable \ App \ firefox \ firefox node selenium-webdriverjs.ff.js',當我運行它時,Firefox啓動,但Selenium仍然死於'無法在當前系統上找到Firefox'。 – 2015-08-01 09:11:36

1

我不確定在Mac上,但在Windows上我解決了這個問題。

確保您使用的是32位版本的nunit。 Firefox是一款32位瀏覽器。

我有一個64位的Windows操作系統,但Firefox是一個32位的瀏覽器。我試圖使用64位版本的nunit,它給出了這個「在PATH中無法良好的firefox二進制」錯誤。我通過使用32位版本的nunit解決了這個問題。基本上,nunit文件夾中有兩個exe文件,nunit.exe和nunit-x86.exe。如果你得到這個「無法在PATH罰款火狐二進制」錯誤,很可能你需要使用32位版本的nunit - Nunit-x86.exe。

1

在Mac OS X上,嘗試運行腳本時,我收到WebDriver錯誤,如「無法找到Firefox二進制文件(os = macosx)」。

我發現我的問題是,我的Firefox應用更名爲「Firefox 22」。 WebDriver的東西只是「Firefox」。

3

對我來說,我需要從Firefox.app /用戶/用戶名/應用程序遷移到/應用

11

對於Mac,如果您通過BREW木桶安裝了Firefox,只是象徵其鏈接到/應用。

cd /Applications 
ln -s /Users/<your-username>/Applications/Firefox.app Firefox.app 

這對我有效。

3

對於Mac:

  1. 使用硒罐子2.44.0(確保硒服務器罐子是2.44。0)
  2. 火狐版本33(https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/33.0/mac/en-US/
  3. 在Mac的終端,使用該命令用於Firefox創建個人資料: 「/Applications/Firefox.app/Contents/MacOS/firefox-bin」 -p

    1. 創建配置文件時,您會看到.default配置文件的路徑, - 請注意這一點,以便爲配置文件路徑輸入相同的代碼。

    2. 代碼應該是這樣的:

字符串PROFILEPATH = 「/用戶/管理員/庫/ ApplicationSupport /火狐/概況/ 4duhjf19.default」;

   System.out.println("profilePath: "+profilePath); 
       File checkProfile = new File(profilePath); 
       File[] allFolder = checkProfile.listFiles(); 
       for (int i = 0; i < allFolder.length; i++) { 

        if (allFolder[i].getName().endsWith(".default")) { 
         profilePath = profilePath + allFolder[i].getName(); 
         break; 
        } 
       } 
FirefoxProfile firefoxprofile1 = new FirefoxProfile(new File(
         profilePath)); 
       System.out.println("profile path : " + firefoxprofile1); 
       driver = new FirefoxDriver(firefoxprofile1); 
       System.out.println("webdriver FF"); 
       driver.manage().deleteAllCookies(); 
+0

這是爲我工作的答案。具體來說''/Applications/Firefox.app/Contents/MacOS/firefox-bin''部分告訴我,我可以運行jar:'java -jar selenium-server-standalone-23.1.jar -Dwebdriver .firefox.bin =「/ Applications/Firefox.app/Contents/MacOS/firefox-bin」' – dgig 2017-02-23 15:43:44

+0

過時的答案 – 2017-12-14 20:38:20