Firefox Selenium驱动程序无法任意加载

时间:2013-01-23 00:37:36

标签: java firefox selenium

我有这个代码用于创建我的网络驱动程序 现在,如果我用1创建驱动程序1,此代码可以正常工作 在多个线程上创建这些驱动程序时会出现问题。

public static WebDriver getConfiguredWebDriver(.....)
  WebDriver driver = null;
  DesiredCapabilities cap = new DesiredCapabilities();
  if(ffp != null) {
    ffp.setPreference("general.useragent.override", getRandomizedUASettings(rand, UserAgentList));
  }
  driver = new FirefoxDriver(null, ffp, cap);
  //driver = new FirefoxDriver(); also gives an error of the same kind during multithreading
  return driver;
}

它给了我这个错误

“Thread-4”org.openqa.selenium.WebDriverException:无法连接到端口7057上的二进制FirefoxBinary(C:\ Program Files(x86)\ Mozilla Firefox \ firefox.exe);流程输出如下: 空值 构建信息:版本:'2.28.0',修订版:'18309',时间:'2012-12-11 20:21:45' 系统信息:os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.6.0_26'

线程代码是

while(...) {
  ....... //
  FirefoxProfile ffp = new FirefoxProfile();
  DataEntryThread t = new DataEntryThread(parentFrame, lead, new ProxySettings(proxySettings), ffp, UserAgentList);
  t.start();
  ....... //
}

错误随机出现在任何线程上,甚至是端口号。这有什么不对?如何实现在不同的线程上加载多个firefox驱动程序?

1 个答案:

答案 0 :(得分:2)

我找到了解决这个问题的工作..只需修改上面代码的一部分

boolean driverCreated = false;
int retryCnt = 3;
int count = 0;
while(!driverCreated && count < retryCnt) {
  try {
    driver = new FirefoxDriver(null, ffp, cap);
    driverCreated = true;
    System.out.println("Driver Created");
  } catch (Exception e) {
    retryCnt++;
  }
}
if(driverCreated == false) { return null; }

基本上,我认为使用不同线程加载的驱动程序同时访问firefox的同一个二进制文件会出错,但我仍然不确定。