【问题标题】:Selenium Grid v.3.1.0 Test - Unable to create new remote sessionSelenium Grid v.3.1.0 测试 - 无法创建新的远程会话
【发布时间】:2017-07-22 13:22:16
【问题描述】:

我正在尝试启动 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}], 所需能力 = 能力 [{}] 构建信息:版本:'未知',修订:'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,version=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 -browser platform=WIN10, browserName=firefox,version=51.0.1

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

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

【问题讨论】:

    标签: firefox jenkins selenium-grid geckodriver


    【解决方案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.0,Selenium 3.1.0设置断点

    String resultString = response.getContentString();

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

    【讨论】:

    • 对不起,我的回答迟了。我已经尝试过了,但得到了同样的错误。我无法真正弄清楚resultString 的值是什么,但失败异常总是告诉我这行有问题:driver = new RemoteWebDriver(new URL("http://[jenkins.mydomain]:4444/wd/hub"), caps); 而且它仍然可以使用chrome。你还有什么建议吗?我感谢您的帮助。非常感谢。
    • 你能用 Selenium 3.3.1 再试一次吗?使用此版本,您不需要任何断点等,并且错误应该很明显
    • 感谢您的快速回复和帮助。现在它也可以与 Chrome 和 Firefox 一起使用,但尝试启动 edge 和 Opera 时仍然出现相同的错误:org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities
    • 您确定您的 Grid/Node 也在 3.3.1 上运行吗?我推入了一个错误修复并合并,它解决了将错误转发回测试的问题。但这需要在客户端(您的测试)和服务器(网格集线器和节点)端都使用 3.3.1。
    • 是的,两者都在 3.3.1(服务器和客户端)上运行,但仍然出现相同的错误。这可能仍然是一个普遍问题吗?因为我在这里发现了那个错误:developer.microsoft.com/en-us/microsoft-edge/platform/issues/… 但是如果你已经推送了一个错误修复,那么我想这只是我的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2017-03-03
    • 2017-09-10
    • 2017-05-26
    • 2021-04-05
    • 1970-01-01
    • 2017-06-08
    相关资源
    最近更新 更多