如何让 Firefox 在 Mac OSX 上与 Selenium WebDriver 一起工作

Posted

技术标签:

【中文标题】如何让 Firefox 在 Mac OSX 上与 Selenium WebDriver 一起工作【英文标题】:How to get Firefox working with Selenium WebDriver on Mac OSX 【发布时间】:2012-04-12 01:03:37 【问题描述】:

我正在尝试为WebDriver 配置代理设置,所以我使用了以下代码 ....

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:在 PATH 中找不到 firefox 二进制文件。

确保已安装 Firefox。操作系统似乎是:MAC

系统信息:os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.6.8',

java.version: '1.6.0_29'

驱动信息:driver.version:FirefoxDriver

任何人都可以帮助我了解如何以及在哪里提供firefoxprofile()的路径

【问题讨论】:

WebDriver 找不到 Firefox 二进制文件的路径。你确定 Firefox 已经安装了吗? @p0deje:当然是!!而且我现在正在使用它... 【参考方案1】:

我相信你有几个选择:

在 PATH 系统变量中指定文件夹(Firefox 二进制文件所在的文件夹) - here's how。

或者打电话

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

【讨论】:

另外,为了避免硬编码路径,您可以使用某种配置文件,例如java.util.Properties。 嘿 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/地图;知道这个例外是什么吗? 试试selenium.open("http://dummy.com"); - 这是带有http前缀的。或者如果您使用的是 WebDriver,那么 driver.get("http://dummy.com"); 嗨@Slanec 我使用代码 FirefoxProfile profile = new FirefoxProfile();进程 p = Runtime.getRuntime().exec("java -jar lib/selenium-server.jar"); 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(new FirefoxBinary(new File("C:/Program Files/Mozilla Firefox/Firefox.exe")), profile); selenium = new WebDriverBackedSelenium(driver, "example.com/"); 然后我给selenium.start(); selenium.open("http://dummy.com"); 加上前缀,错误仍然触发!这是正确的打电话方式吗?谢谢【参考方案2】:

对于 Mac,如果您通过 brew cask 安装 FireFox,只需将其符号链接到 /Applications。

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

这对我有用。

【讨论】:

【参考方案3】:

在我的情况下,我需要将 Firefox.app 从 /Users/username/Applications 移动到 /Applications

【讨论】:

【参考方案4】:

对于 Mac:

    使用 selenium jar 2.44.0(确保 selenium server jar 为 2.44.0) firefox 版本 33 (https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/33.0/mac/en-US/)

    在 Mac 终端中,使用此命令为 firefox 创建配置文件:"/Applications/Firefox.app/Contents/MacOS/firefox-bin" -p

      在创建配置文件时,您会看到配置文件的路径带有 .default,- 请记下这一点,以便在配置文件路径的代码中输入相同的内容。

      代码如下所示:

String profilePath="/Users/admin/Library/ApplicationSupport/Firefox/Profiles/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();

【讨论】:

这是对我有用的答案。具体来说,"/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" 过时的答案【参考方案5】:

我以前遇到过这个问题,很容易解决。

Windows上,修改环境变量,将firefox path添加到PATH变量中。

Mac 上应该是类似的,只是在您的个人资料文件中export PATH=/my/firefox/path/bin:$PATH

【讨论】:

也可以是每个用户安装 FF,而不是系统范围 在 Windows 上,将 Firefox(便携版)添加到 PATH 并没有解决任何问题。我制作了这个 BAT 文件 set PATH=%PATH%;C:\Utils\FirefoxPortable\App\firefox\ firefox node selenium-webdriverjs.ff.js,当我运行它时,Firefox 启动,但 Selenium 仍然与 Could not locate Firefox on the current system 一起死去。【参考方案6】:

我不确定是否在 Mac 上,但在 Windows 上我解决了这个问题。

确保您使用的是 32 位版本的 nunit。 Firefox 是 32 位浏览器。

我有一个 64 位的 Windows 操作系统,但 Firefox 是一个 32 位的浏览器。我试图使用 64 位版本的 nunit,它给出了“无法在 PATH 中处理 firefox 二进制文件”错误。我通过使用 32 位版本的 nunit 解决了这个问题。基本上,nunit文件夹中有两个exe文件,nunit.exe和nunit-x86.exe。如果您收到“Cannot Fine firefox binary in PATH”错误,很可能您需要使用 32 位版本的 nunit - Nunit-x86.exe。

【讨论】:

【参考方案7】:

在 Mac OS X 上,我在尝试运行脚本时收到类似“找不到 Firefox 二进制文件 (os=macosx)”的 WebDriver 错误。

我发现我的问题是将我的 Firefox 应用重命名为“Firefox 22”。 WebDriver 的东西只需要“Firefox”。

【讨论】:

【参考方案8】:

由于 selenium web 驱动程序无法找到 Firefox 的 .exe 文件而导致的此类问题。请检查 C:\Program Files (x86)\Mozilla Firefox 所在位置是否有 exe 文件,不要忘记设置具有 java jdk 路径的环境变量。 来源:-http://www.tech4crack.com/solved-cannot-find-firefox-binary-in-path/

【讨论】:

以上是关于如何让 Firefox 在 Mac OSX 上与 Selenium WebDriver 一起工作的主要内容,如果未能解决你的问题,请参考以下文章

cocoapods 如何在 OSX 10.9.3 上与 xcode 6 一起使用?

如何关闭OSX 10.11 SIP

mac osx 下 浏览器 开启 java

JSON HTTP请求在Mac OSX上不起作用[重复]

JSON HTTP请求在Mac OSX上不起作用[重复]

如何让 osx shell 脚本在 echo 中显示颜色