我是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");
}
}
答案 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容器的运行状态。