如何让 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 一起工作的主要内容,如果未能解决你的问题,请参考以下文章