C# 操作驱动器不工作

C# 操作驱动器不工作,c#,opera,selenium-webdriver,selenium-grid,C#,Opera,Selenium Webdriver,Selenium Grid,在MSTest类中使用Selenium Grid2和RemoteWebDriver,我很难让OperaDriver正常工作 我通过在CMD中运行以下命令来创建Selenium hub和Opera节点: start java -jar selenium-server-standalone-2.30.0.jar -role hub start java -jar selenium-server-standalone-2.30.0.jar -role node -port 7001 -browser

在MSTest类中使用Selenium Grid2和RemoteWebDriver,我很难让OperaDriver正常工作

我通过在CMD中运行以下命令来创建Selenium hub和Opera节点:

start java -jar selenium-server-standalone-2.30.0.jar -role hub
start java -jar selenium-server-standalone-2.30.0.jar -role node -port 7001 -browser "browserName=opera,version=11.62,maxInstances=5,platform=WINDOWS" -hub http://localhost:4444/grid/register
这很好,当我在浏览器中查看中心时,我可以看到注册的节点

但每当我试图在我的C#test类中创建一个新的
WebDriver
时,我就会遇到一个异常:

DesiredCapabilities operaCapabilities = DesiredCapabilities.Opera();
operaCapabilities.SetCapability(CapabilityType.BrowserName, "opera");
operaCapabilities.SetCapability(CapabilityType.Platform, "WINDOWS");
operaCapabilities.SetCapability(CapabilityType.Version, "11.62");
operaCapabilities.SetCapability("opera.binary", "C:\\Program Files\\Opera\\opera.exe");
operaCapabilities.SetCapability("opera.port", 7001);
RemoteWebDriver operaDriver = new RemoteWebDriver(operaCapabilities);
实际上,我得到了两个不同的例外-在Selenium中创建hub和node后的第一次,我得到了以下结果:

找不到支持捆绑启动器的平台,请设置 它是手动的

生成信息:版本:“2.30.0”,修订版:“dc1ef9c”,时间:“2013-02-19” 00:15:27'

系统信息:os.name:'Windows 8',os.arch:'x86',os.version:'6.2', java.version:'1.7.0_15'

驱动程序信息:驱动程序。版本:OperaDriver

之后每次我都会出现以下错误:

无法初始化类 com.opera.core.systems.runner.launcher.operaluncherrunner

我使用的是
Selenium-standalone-2.30.0

我使用的是Opera版本12.14,但在屏幕上看到兼容版本的列表后,降级到11.62,但错误保持不变

我尝试过初始化RemoteWebDriver,无论是否具有上述功能,每次都会得到相同的结果

有人知道这里的问题是什么,以及如何让RemoteWebDriver以这种方式与Opera一起工作吗

编辑:当我打开
Opera
浏览器并查看
帮助=>关于
时,
Opera 12.14版
的平台是否显示为
'Windows8'
,而
11.62版
显示为
WIN32“
?因为我在节点中将平台指定为
WINDOWS
,并且
RemoteWebDriver
。如果我尝试将WINDOWS 8指定为RemoteWebDriver的平台,则会在找不到匹配枚举的位置引发新异常:

org.openqa.selenium.WebDriverException: java.lang.IllegalArgumentException:无枚举常量 org.openqa.selenium.Platform.windows8

Edit2:出于某种原因,
CurrentPlatform
正在为我返回
Vista
,即使我正在运行
Windows8

Platform platform = Platform.CurrentPlatform;
我还注意到,检查“VISTA”时大写,而C#中的平台读作“VISTA”


这会导致问题吗?

我在Java中运行时看到了这一点。在调试模式下,OperaLauncherRunner.java launcherNameForOS中可能会出现遗漏,因为它不符合Platform.getCurrent()返回的WIN8枚举

在Java中,我通过在创建新的OperaDriver之前将系统属性“os.name”设置为“windows”来伪造它。这迫使Platform.getCurrent返回opera启动器满意的XP

所以在java中,我使用了以下技巧:

System.setProperty("os.name","windows");
driver = new OperaDriver();

我在Java中运行时看到了这一点。在调试模式下,OperaLauncherRunner.java launcherNameForOS中可能会出现遗漏,因为它不符合Platform.getCurrent()返回的WIN8枚举

在Java中,我通过在创建新的OperaDriver之前将系统属性“os.name”设置为“windows”来伪造它。这迫使Platform.getCurrent返回opera启动器满意的XP

所以在java中,我使用了以下技巧:

System.setProperty("os.name","windows");
driver = new OperaDriver();

我也遇到了这个问题,多亏了eviltester的提示,我能够通过使用以下命令行启动selenium服务器来解决这个问题:

java -Dos.name=windows -jar selenium-server-standalone-2.32.0.jar

使用
-Dos.name=windows
相当于
System.setProperty(“os.name”、“windows”)
并将允许您的C#selenium代码在Opera浏览器上工作。

我也遇到了这个问题,多亏了EvileTester的提示,我能够通过使用以下命令行启动selenium服务器来解决这个问题:

java -Dos.name=windows -jar selenium-server-standalone-2.32.0.jar

使用
-Dos.name=windows
相当于
System.setProperty(“os.name”、“windows”)
,将允许您的C#selenium代码在Opera浏览器中工作。

您解决了问题吗?我也有同样的错误。还没有,我注意到自从我发布这个问题以来,Selenium standalone发布了一个更新版本,但还没有机会测试它是否已经解决。yetI使用最后一个问题进行了测试:(-2.31.0.您解决了问题吗?我有相同的错误。还没有,我注意到自从我发布此问题以来,Selenium standalone发布了一个更新版本,但还没有机会测试它是否已解决。yetI使用最后一个问题进行了测试:(-2.31.0.谢谢我对IE11有相同的错误,这解决了问题谢谢我对IE11有相同的错误,这解决了问题