我正在尝试使用Opera(版本31)运行Java硒测试。我正在使用Selenium Webdriver的最新版本(2.47.1)和OperaChromiumDriver的最新版本(0.2.2)。
我尝试使用下一个方法实例化Opera:

 System.setProperty("webdriver.chrome.driver", "\\path\\to\\my\\operadriver.exe");
 WebDriver driver = new ChromeDriver();


而且我尝试了RemoteWebdriver的另一种方法:

DesiredCapabilities capabilities = DesiredCapabilities.opera();
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/opera");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"),capabilities);


(这些问题的答案中描述了这些方法:How to use OperaChromiumDriver for opera version >12.X

两种方法都有相同的问题。
Opera会打开,但随后会崩溃并出现下一个异常:

org.openqa.selenium.SessionNotCreatedException: session not created exception from disconnected: Unable to receive message from renderer
(Session info: Opera with embedded Chromium 0.1889.230)
(Driver info: OperaDriver=0.2.0 (ba47709ed9e35ce26dbd960fb5d75be104290d96),platform=Windows NT 6.1 x86_64
(WARNING: The server did not provide any stacktrace information)


Firefox,Chrome和IE驱动程序可以正常工作,我只有OperaChromiumDriver有这种问题。
谁能帮我解决这个问题?

最佳答案

尝试像这样实例化OperaDriver

File operaFile = new File("\\path\\to\\my\\operadriver.exe");
System.setProperty("webdriver.opera.driver", operaFile.getAbsolutePath());
WebDriver driver = new OperaDriver();


在我的应用程序中,.getAbsolutePath()有效,但仅在.setProperty中指定路径无效。不知道为什么,因为两者的字符串输出都是相同的。

不幸的是,我仍然无法在测试中使用OperaDriver,因为它在加载了几页后变得无响应。这在运行不同版本Windows的3台不同计算机上发生,并且仅返回以下错误:

[SEVERE]: Timed out receiving message from renderer:


FirefoxDriver,ChromeDriver和InternetExplorerDriver都可以在我的测试中正常工作,所以无论如何。

07-27 18:15