Selenium Grid v.3.1.0测试 - 无法创建新的远程会话

时间:2017-03-02 17:16:58

标签: firefox jenkins selenium-grid geckodriver

我尝试推出 Firefox(v.51.0.1),Chrome(v.56.0.2924.87),Edge(v.38.14393.0.0)**和Opera(v .43.0)**使用Selenium Grid在不同的机器(Windows 10)上。 它与Chrome浏览器配合使用,但总是遇到其余浏览器的问题。 请参阅以下错误消息:

org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。 desired capabilities = Capabilities [{marionette = true,browserName = firefox,version =,platform = WIN10}], 所需能力=能力[{}] 建立信息:版本:'未知',修订版:' 1969d75',时间:' 2016-10-18 09:43:45 -0700' 系统信息:...,os.name:' Linux',os.arch:' amd64',os.version:' 4.4.0-62-generic&#39 ;,java.version:' 1.8.0_121' 驱动程序信息:driver.version:RemoteWebDriver

我启动远程浏览器的命令(例如Firefox 51.0.1):

java -jar selenium-server-standalone-3.1.0.jar -role node -hub http://[jenkins.mydomain]:4444/grid/register -browser platform = WIN10,b​​rowserName = firefox,version = 51.0.1 < / p>

我在Eclipse上的测试代码(只是一个简单的例子):

package testpackage; 
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;


public class FirefoxJenkins {
    RemoteWebDriver driver;
    @Parameters({ "platform", "browser", "url", "version" })
    @Test
    public void FirefoxTest() throws MalformedURLException{

    System.setProperty("webdriver.gecko.driver", "C:\\DEV\\geckodriver.exe");
    //RemoteWebDriver driver = new FirefoxDriver();
    DesiredCapabilities caps = DesiredCapabilities.firefox();
    caps.setBrowserName("firefox");
    caps.setPlatform(org.openqa.selenium.Platform.WIN10);

    //FirefoxProfile profile = new ProfilesIni().getProfile("default");
    //profile.setAcceptUntrustedCertificates(false);
    //profile.setAssumeUntrustedCertificateIssuer(false);
    //caps.setCapability(FirefoxDriver.PROFILE, profile);
    driver = new RemoteWebDriver(new URL("http://[jenkins.mydomain]:4444/wd/hub"), caps);
    driver.navigate().to("http://www.google.de");
    driver.manage().window().maximize();
    driver.quit();
    }


}

XML-文件

<?xml version="1.0" encoding="utf-8"?>

<!--Set thread-count = 3 to execute test parallel in 3 max browsers at at time. You can increase it-->
<suite name="Parallel Tests" verbose="1" thread-count="1" parallel="tests">
 <tests>
  <test name="Windows+firefox Test">
   <parameters>
    <parameter name="platform" value="WIN10"/>
    <parameter name="browser" value="firefox"/>
    <parameter name="url" value="http://www.google.de/"/>
    <parameter name="version" value="51.0.1"/>
   </parameters>
   <classes>
    <class name="testpackage.FirefoxJenkins"/>
   </classes>
  </test> 
   </tests>
</suite>

(与其他浏览器的代码相同)

我已经尝试过几件事,但事实并没有成功:

  • 命令java:-Dwebdriver.gecko.driver =&#34; C:\ DEV \ geckodriver.exe&#34; -jar selenium-server-standalone-3.1.0.jar -role node -hub {{3} } -browser platform = WIN10,b​​rowserName = firefox,version = 51.0.1

PS:尝试启动edge和opera时遇到同样的问题(即使使用IEDriverServer.exe和operadriver.exe)。

你能帮我解决这个问题吗?我很感激。

1 个答案:

答案 0 :(得分:1)

这是你可以做的。出于一些奇怪的原因,我注意到有时候Selenium Webdriver会吞噬掉实际的异常,而是给你那个我同意的通用异常很难解密。

所以你可以做到以下(实际行号可能会有所不同,具体取决于Selenium版本。我假设你使用的是Selenium 3.0二进制文件)

您需要在此行的org.openqa.selenium.remote.ProtocolHandshake#createSession(org.openqa.selenium.remote.http.HttpClient, java.lang.StringBuilder) Selenium 3.2.0Selenium 3.1.0设置断点

String resultString = response.getContentString();

并在调试模式下运行测试。 resultString的实际响应值应该告诉您真正的问题。