WedDriverException:初始化RemoteWebDriver时,java.util.HashMap无法强制转换为java.lang.String

时间:2014-01-21 14:04:46

标签: java selenium junit selenium-grid2 parallel-testing

我试图在parllel中运行Junit测试,用3个节点进行网格设置,同时执行测试得到异常

org.openqa.selenium.firefox.NotConnectedException:45000 ms后无法在端口7055上连接到主机127.0.0.1。

我的理解是与Firefox和selenium版本无关,我认为异常是由于firefox为一个webdriver实例发出的锁定,该实例在45000 ms内未发布,这会导致其他webdriver实例尝试超时异常同时在端口7055上连接(由于系统运行缓慢而导致)

所以我相信在这种情况下使用以下代码增加超时

   DesiredCapabilities capablities = new DesiredCapabilities();

    FirefoxBinary firefoxBinary = new FirefoxBinary();
    firefoxBinary.setTimeout(120000);


    FirefoxProfile profile = new FirefoxProfile();
    profile.setAcceptUntrustedCertificates(true);
    profile.setAssumeUntrustedCertificateIssuer(false);

    capablities = DesiredCapabilities.firefox();

    capablities.setCapability("firefox_binary", firefoxBinary);
    capablities.setCapability("firefox_profile", profile);

   driver =  new RemoteWebDriver(new URL("http://" + parameters.getRemoteUrl() + ":4444/wd/hub"), capablities);

但又出现异常 WedDriverException:java.util.HashMap无法强制转换为java.lang.String

设置firefoxbinary

的功能时抛出此异常
capablities.setCapability("firefox_binary", firefoxBinary);

否则创建RemoteWebdriver实例时没有任何问题

请告诉我,如果我正确地增加关于端口7055锁定的超时,如果这样帮助我解决Firefox Binary中的webdriver异常

2 个答案:

答案 0 :(得分:0)

我不确定您收到的原始错误(无法连接到端口7055上的主机127.0.0.1)是否是由于超时问题。我确信它与您使用的selenium和firefox版本有关。如果您还没有,请查看similar question和我的答案。我相信如果你没有使用最新版本,你需要升级你的硒版本。

答案 1 :(得分:0)

我有同样的问题

此代码适用于我的本地PC。

FirefoxProfile fp = new FireFoxProfile();
fp.setPreference("Firefox43", "43.0.1");        
File pathBinary = new 
         File("C:\\PathToFirefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);       
WebDriver driver = new FirefoxDriver(firefoxBinary, fp);

但是这段代码没有......

FirefoxProfile fp = new FirefoxProfile();
fp.setPreference("Firefox43", "43.0.1");
File pathBinary = new 
         File("C:\\PathToFirefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);        
capabilities.setCapability(FirefoxDriver.PROFILE, fp);
capabilities.setCapability(FirefoxDriver.BINARY,firefoxBinary);
WebDriver driver = new RemoteWebDriver(new URL(hubUrl), capabilities);

似乎RemoteWebDriver存在错误,请检查 this question

更新!!!!!

使用:

capabilities.setCapability(FirefoxDriver.BINARY, new
            File("C:\\PathToFirefox\\firefox.exe"));

而不是......

File pathBinary = new 
             File("C:\\PathToFirefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);
capabilities.setCapability(FirefoxDriver.BINARY,firefoxBinary);