Selenium Grid v.3.1.0 测试 - 无法创建新的远程会话
Selenium Grid v.3.1.0 Test - Unable to create new remote session
我正在尝试启动 Firefox (v. 51.0.1)、Chrome (v.56.0.2924.87)、Edge (v.38.14393.0.0 )** 和 Opera (v. 43.0) ** 在另一台机器 (Windows 10) 上使用 Selenium Grid。
它在 Chrome 浏览器 上运行良好,但在其他浏览器上总是会出现一些问题。
请查看以下错误消息:
org.openqa.selenium.SessionNotCreatedException: 无法创建新的远程会话。所需的能力 = 能力 [{marionette=true, browserName=firefox, version=, platform=WIN10}],
所需能力 = 能力 [{}]
构建信息:版本:'unknown',修订:'1969d75',时间:'2016-10-18 09:43:45 -0700'
系统信息:..., os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-62-generic', 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,browserName=firefox,版本=51.0.1
我在 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="C:\DEV\geckodriver.exe"-jar selenium-server-standalone-3.1.0.jar -role node -hub http://[jenkins.mydomain]:4444/grid/register -浏览器平台=WIN10,浏览器名称=firefox,版本=51.0.1
PS:我在尝试启动 edge 和 opera 时遇到了同样的问题(即使使用 IEDriverServer.exe 和 operadriver.exe)。
你能帮我解决这个问题吗?我很感激。
您可以执行以下操作。出于某种奇怪的原因,我注意到有时 Selenium Webdriver 会吞噬掉实际的异常,而是给你我同意难以破译的通用异常。
因此您可以执行以下操作(实际行号可能因 Selenium 版本而异。我假设您使用的是 Selenium 3.0 二进制文件)
您需要在 org.openqa.selenium.remote.ProtocolHandshake#createSession(org.openqa.selenium.remote.http.HttpClient, java.lang.StringBuilder)
Selenium 3.2.0 , Selenium 3.1.0 这一行设置断点
String resultString = response.getContentString();
和 运行 您在调试模式下的测试。 resultString
的实际响应值应该告诉你真正的问题。
我正在尝试启动 Firefox (v. 51.0.1)、Chrome (v.56.0.2924.87)、Edge (v.38.14393.0.0 )** 和 Opera (v. 43.0) ** 在另一台机器 (Windows 10) 上使用 Selenium Grid。 它在 Chrome 浏览器 上运行良好,但在其他浏览器上总是会出现一些问题。 请查看以下错误消息:
org.openqa.selenium.SessionNotCreatedException: 无法创建新的远程会话。所需的能力 = 能力 [{marionette=true, browserName=firefox, version=, platform=WIN10}], 所需能力 = 能力 [{}] 构建信息:版本:'unknown',修订:'1969d75',时间:'2016-10-18 09:43:45 -0700' 系统信息:..., os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-62-generic', 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,browserName=firefox,版本=51.0.1
我在 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="C:\DEV\geckodriver.exe"-jar selenium-server-standalone-3.1.0.jar -role node -hub http://[jenkins.mydomain]:4444/grid/register -浏览器平台=WIN10,浏览器名称=firefox,版本=51.0.1
PS:我在尝试启动 edge 和 opera 时遇到了同样的问题(即使使用 IEDriverServer.exe 和 operadriver.exe)。
你能帮我解决这个问题吗?我很感激。
您可以执行以下操作。出于某种奇怪的原因,我注意到有时 Selenium Webdriver 会吞噬掉实际的异常,而是给你我同意难以破译的通用异常。
因此您可以执行以下操作(实际行号可能因 Selenium 版本而异。我假设您使用的是 Selenium 3.0 二进制文件)
您需要在 org.openqa.selenium.remote.ProtocolHandshake#createSession(org.openqa.selenium.remote.http.HttpClient, java.lang.StringBuilder)
Selenium 3.2.0 , Selenium 3.1.0 这一行设置断点
String resultString = response.getContentString();
和 运行 您在调试模式下的测试。 resultString
的实际响应值应该告诉你真正的问题。