System.InvalidOperationException:转发新会话时出错找不到:功能{browserName:chrome,marionette:false}
System.InvalidOperationException : Error forwarding the new session cannot find : Capabilities {browserName: chrome, marionette: false}
我正在尝试 运行 我的 Selenium
C# 自动化测试使用 Grid
。
当我 运行 测试时出现错误:
Message: System.InvalidOperationException : Error forwarding the new session cannot find : Capabilities {browserName: chrome, marionette: false, platform: WINDOWS}
我在以下目录中有 chromedriver.exe
:
F:\Selenium Projects\C#\Grid practice\automation\
我已将系统、控制面板的环境变量路径设置为路径:
F:\Selenium Projects\C#\Grid practice\automation\
我的代码片段是:
public class Browsers : DriverClass
{
public IWebDriver LaunchBrowser(string browser)
{
switch (browser)
{
case "chrome":
GoToChromeBrowser("chrome");
break;
case "firefox":
GoToFirefoxBrowser();
break;
case "ie":
GoToIeBrowser();
break;
case "edge":
GoToEdgeBrowser();
break;
case "remote":
GoToRemoteBrowser();
break;
default:
throw new Exception("did not find browser type selected");
}
return Driver;
}
}
方法GoToChromeBrowser()
:
public void GoToChromeBrowser(string BrowserType)
{
switch (BrowserType)
{
case "firefox":
Driver = new FirefoxDriver();
break;
case "chrome":
DesiredCapabilities cap = new DesiredCapabilities();
cap.SetCapability(CapabilityType.BrowserName, "chrome");
cap.SetCapability("marionette", false);
cap.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
Driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), cap);
break;
}
}
要启动集线器,我在 CMD 中使用命令:
java -jar F:\Selenium\Server\selenium-server-standalone-3.11.0.jar -role hub
要注册节点,我使用命令:
java -jar selenium-server-standalone-3.11.0.jar -role node -hub http://localhost:4444/grid/register -browser "browserName=chrome version=ANY, maxInstances=5, platform=WINDOWS" -port 5566
集线器已正常启动,节点已注册。那里没有错误。
为什么我 运行 在 Visual Studio 中进行测试时出现错误?
我错过了什么或做错了什么?
试试这个。启动节点时指定驱动程序的位置。
java -Dwebdriver.chrome.driver=D:/nchaurasia/Automation-Architect/connect2tech.in-SeleniumWebDriver3.x_2/driver/chromedriver.exe -jar selenium-server-standalone-3.9.1.jar -role node -hub http://192.168.137.1:4444/grid/register/
这个错误信息...
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
...表示 ChromeDriver 无法 initiate/spawn 新的 WebClient 即 Chrome 浏览器 session.
您的主要问题是 ChromeDriver 存在未定义的 capability,如下所示:
- 您使用 "marionette"、false 调用了
SetCapability()
,但是 ChromeDriver 不支持 marionette. 等功能
- 能力 marionette 由 GeckoDriver 使用,而您正在使用 selenium-server-standalone-3.11.0.jar 你必须强制使用 GeckoDriver 默认设置
marionette
为 true。如果你强行设置 marionette
为 false,GeckoDriver 将抛出异常.
正如@NareshChaurasia 在启动 Selenium Hub Node 时指出的那样,您必须传递 [=75= 的绝对路径]Driver如下:
java -Dwebdriver.chrome.driver=F:/Selenium Projects/C#/Grid practice/automation/chromedriver.exe -jar selenium-server-standalone-3.11.0.jar -role node -hub http://192.168.0.100:4444/grid/register
我正在尝试 运行 我的 Selenium
C# 自动化测试使用 Grid
。
当我 运行 测试时出现错误:
Message: System.InvalidOperationException : Error forwarding the new session cannot find : Capabilities {browserName: chrome, marionette: false, platform: WINDOWS}
我在以下目录中有 chromedriver.exe
:
F:\Selenium Projects\C#\Grid practice\automation\
我已将系统、控制面板的环境变量路径设置为路径:
F:\Selenium Projects\C#\Grid practice\automation\
我的代码片段是:
public class Browsers : DriverClass
{
public IWebDriver LaunchBrowser(string browser)
{
switch (browser)
{
case "chrome":
GoToChromeBrowser("chrome");
break;
case "firefox":
GoToFirefoxBrowser();
break;
case "ie":
GoToIeBrowser();
break;
case "edge":
GoToEdgeBrowser();
break;
case "remote":
GoToRemoteBrowser();
break;
default:
throw new Exception("did not find browser type selected");
}
return Driver;
}
}
方法GoToChromeBrowser()
:
public void GoToChromeBrowser(string BrowserType)
{
switch (BrowserType)
{
case "firefox":
Driver = new FirefoxDriver();
break;
case "chrome":
DesiredCapabilities cap = new DesiredCapabilities();
cap.SetCapability(CapabilityType.BrowserName, "chrome");
cap.SetCapability("marionette", false);
cap.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
Driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), cap);
break;
}
}
要启动集线器,我在 CMD 中使用命令:
java -jar F:\Selenium\Server\selenium-server-standalone-3.11.0.jar -role hub
要注册节点,我使用命令:
java -jar selenium-server-standalone-3.11.0.jar -role node -hub http://localhost:4444/grid/register -browser "browserName=chrome version=ANY, maxInstances=5, platform=WINDOWS" -port 5566
集线器已正常启动,节点已注册。那里没有错误。
为什么我 运行 在 Visual Studio 中进行测试时出现错误?
我错过了什么或做错了什么?
试试这个。启动节点时指定驱动程序的位置。
java -Dwebdriver.chrome.driver=D:/nchaurasia/Automation-Architect/connect2tech.in-SeleniumWebDriver3.x_2/driver/chromedriver.exe -jar selenium-server-standalone-3.9.1.jar -role node -hub http://192.168.137.1:4444/grid/register/
这个错误信息...
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
...表示 ChromeDriver 无法 initiate/spawn 新的 WebClient 即 Chrome 浏览器 session.
您的主要问题是 ChromeDriver 存在未定义的 capability,如下所示:
- 您使用 "marionette"、false 调用了
SetCapability()
,但是 ChromeDriver 不支持 marionette. 等功能
- 能力 marionette 由 GeckoDriver 使用,而您正在使用 selenium-server-standalone-3.11.0.jar 你必须强制使用 GeckoDriver 默认设置
marionette
为 true。如果你强行设置marionette
为 false,GeckoDriver 将抛出异常. 正如@NareshChaurasia 在启动 Selenium Hub Node 时指出的那样,您必须传递 [=75= 的绝对路径]Driver如下:
java -Dwebdriver.chrome.driver=F:/Selenium Projects/C#/Grid practice/automation/chromedriver.exe -jar selenium-server-standalone-3.11.0.jar -role node -hub http://192.168.0.100:4444/grid/register