当我运行代码时,它显示以下错误-电子应用程序
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist.
Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'
System info: host: 'DESKTOP-GN8LLQU', ip: '192.168.1.20', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.2'
Driver info: driver.version: ChromeDriver
我的代码:
ChromeOptions opt = new ChromeOptions();
// path of your Electron Application
opt.setBinary("D:\\FOS\\fiber-optic-system-electron\\release\\angular-electron 0.1.0.exe");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("chromeOptions", opt);
capabilities.setBrowserName("chrome");
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver_win32 (6)\\chromedriver.exe");
WebDriver driver = new ChromeDriver(capabilities);
答案 0 :(得分:2)
我本人一直遇到错误 DevToolsActivePort文件,对于我来说,该错误是正确的,根本原因是电子应用本身。
从v2.39开始,Chrome的网络驱动程序(chromedriver.exe)默认情况下会查找名为 DevToolsActivePort 的文件,并在找到文件后读取该文件,以获取当前在chrome中运行的devtools的端口号(以及在您的情况下,Chrome实例正在运行电子应用“ angular-electron 0.1.0.exe”。
当您在Selenium中创建ChromeDriver并包含-remote-debugging-port = 0 参数时,或者根本不包含此参数时,chromedriver将发送-在命令行中将remote-debugging-port = 0 转到电子应用程序(即,角度电子0.1.0.exe)。如果您的电子应用程序将此参数传递给运行在其中的Chrome应用程序,则会创建 DevToolsActivePort 文件,chromedriver可以读取该文件并获取devtools的端口,并且自动化成功。但是,如果您的电子应用程序未将此参数传递给Chrome,则将永远不会创建 DevToolsActivePort 文件,并且您的chromedriver会超时寻找它并失败。
对于解决方案,您有两种选择:
就我而言,我使用了选项2。这是您可以手动测试此选项的方法。如果在电子应用程序之前运行 SysInternal的Tcpview (https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview)之类的应用程序,则Tcpview将向您显示电子应用程序正在监听的端口。这些端口之一将是Chrome的devtools端口。注意这一点。现在进入Windows中的%temp%文件夹,因为这是包含chromedriver正在寻找的DevToolsActivePort文件的临时文件夹的默认位置。在此文件夹中查找以 scoped_dir 为前缀的文件夹。默认情况下,每次运行chromedriver时,它们都会创建一个。为了确保您访问正确的文件夹,最好在运行之前先在chromedriver中使用-user-data-dir 参数自行设置此目录名称。进入该文件夹并创建一个名为 DevToolsActivePort 的新文件,并在第一行中输入端口号,然后按Enter(换行),然后在第二行中输入任意数字。保存文件并关闭。如果您在60秒内手动完成了整个过程,正在运行的chromedriver将读取该文件,获取Chrome的devtools的端口,连接到该文件并继续。
我已经开发了一个AutoIT脚本,该脚本可以自动完成上述过程,并且每次都将其包含在自己的自动化运行中。
希望这会有所帮助。
答案 1 :(得分:0)
此错误消息...
org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist.
Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'
System info: host: 'DESKTOP-GN8LLQU', ip: '192.168.1.20', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.2'
Driver info: driver.version: ChromeDriver
...表示 ChromeDriver 无法启动/产生新的 WebBrowser ,即 Chrome浏览器会话。
您的主要问题是所使用的二进制版本之间的不兼容性:
因此 Selenium Client v3.6.0 , ChromeDriver v77.0 和 Chrome浏览器v77.0 <之间显然存在不匹配/ p>
确保:
@Test
。driver.quit()
方法内调用tearDown(){}
,以优雅地关闭和销毁 WebDriver 和 Web Client 实例。注意:根据Unable to import org.openqa.selenium.WebDriver using Selenium and Java 11,最好降级为 Java 8