WebDriverException:转发新会话时出错无法找到:{platform = WINDOWS,browserName = FIREFOX,version = 3.6}

时间:2013-03-14 13:46:25

标签: java selenium-webdriver

我是Selenium Web驱动程序以及Grid 2的新手。

我正在尝试运行测试用例,但它给了我一个例外

  

线程“main”中的异常org.openqa.selenium.WebDriverException:转发新会话时出错找不到:{platform = WINDOWS,browserName = FIREFOX,version = 3.6}

我已使用命令

启动了节点和集线器
java -jar selenium-server-standalone-2.29.0.jar -role hub

java -jar selenium-server-standalone-2.29.0.jar -role node  -hub %grid register%

这两个命令都可以正常工作。

我不确定何时何地需要使用命令行  -browser browserName = firefox,version = 3.6,maxInstances = 5,platform = WINDOWS

(试图从Grid 2官方页面配置节点

是不是因为这个?

这是我的代码:

package test;

import java.net.URL;
import java.net.MalformedURLException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class Test { 
    public static void main(String[] args) throws MalformedURLException {
        DesiredCapabilities capability = DesiredCapabilities.firefox();
            capability.setBrowserName("FIREFOX");
            capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);
            capability.setVersion("3.6");
    //  capability.setCapability("");
        WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
        //WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com"); 

}
}

6 个答案:

答案 0 :(得分:3)

对于注册节点,使用特定的浏览器配置,您必须在命令提示符下使用以下行:

java -jar selenium-server-standalone-2.32.0.jar -role node -hub http://xxx.xxx.xxx.xxx:4444/grid/register -browser browserName = firefox

将xxx替换为实际的IP地址

答案 1 :(得分:1)

我认为这是由于capability.setBrowserName("FIREFOX");

应为capability.setBrowserName("firefox");

答案 2 :(得分:0)

我也面临同样的问题。 它得到了解决,问题出在4444端口上。 因此,为我的系统创建全局IP并允许端口4444为我工作。

答案 3 :(得分:0)

如果你进行并行测试。增加线程数并增加集线器内存

cat /proc/sys/kernel/threads-max
echo 100000 > /proc/sys/kernel/threads-max

答案 4 :(得分:0)

可能就是它说的:hub / selenium无法找到所需功能的匹配。

我遇到了这个问题,得到的错误是(格式化后):

java.lang.RuntimeException : org.openqa.selenium.WebDriverException : Error forwarding the new session cannot find : Capabilities[{
        proxy = {
            proxyAutoconfigUrl = null,
            socksUsername = null,
            socksPassword = null,
            autodetect = false,
            httpProxy = xxxxxxxxxxxx.com : 8080,
            proxyType = MANUAL,
            noProxy = xxxxxxxxxxxxx.net,
            ftpProxy = null,
            hCode = 1273131486,
            socksProxy = null,
            class = org.openqa.selenium.Proxy,
            sslProxy = xxxxxxxxxxxxxx.com : 8080
        },
        loggingPrefs = org.openqa.selenium.logging.LoggingPreferences @ 3564e4e9,
        browserName = MicrosoftEdge,
        type = regular,
        version = ,
        platform = ANY
    }
]

事实证明我的同事已经为功能添加了一个新参数(“type”),并且我没有更新配置我的Selenium节点的.json文件。

答案 5 :(得分:0)

您可以检查URL http://localhost:4444/grid/console,如果已经建立了硒网格并且正在运行,但是需要检查是否已注册任何节点!(即检查是否已注册任何浏览器)

如果不是,则需要使用以下命令注册Selenium节点 java -jar selenium-server-standalone-x.xx.0.jar -role node -hub http://localhost:4444/grid/register

确保在计算机上安装了firefox浏览器,并且路径中存在geckodriver。

有时,如果您已经使用docker容器运行了selenium hub,则需要使用docker kill $(docker ps -q);杀死docker容器

如果您正在运行webdriverio,请检查docker selenium容器的运行状态。