Mee*_*tel 2 selenium google-chrome selenium-chromedriver electron java-11
当我运行代码时,它显示以下错误 - Electron application
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
Run Code Online (Sandbox Code Playgroud)
我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
我自己也遇到过DevToolsActivePort 文件不存在的错误,在我的情况下,错误是正确的,根本原因是电子应用程序本身。
自 v2.39 起,Chrome 的网络驱动程序 (chromedriver.exe) 默认情况下会查找名为DevToolsActivePort的文件,并在找到时读取该文件以获取当前在 chrome 中运行的 devtools 的端口号(在您的情况下,是电子应用程序运行的 Chrome 实例) “角电子0.1.0.exe”正在运行)。
当您在 Selenium 中创建 ChromeDriver 并包含--remote-debugging-port=0参数,或者根本不包含此参数时,chromedriver 会将命令行中的--remote-debugging-port=0发送到您的电子应用程序(即角电子0.1.0.exe)。如果您的 electon 应用程序将此参数传递给在其中运行的 Chrome 应用程序,则会创建DevToolsActivePort文件,chromedriver 可以读取该文件并获取 devtools 的端口,并且自动化会成功。但是,如果您的电子应用程序未将此参数传递给 Chrome,则永远不会创建DevToolsActivePort文件,并且您的 chromedriver 会超时查找它并失败。
您有多种解决方案可供选择:
就我而言,我选择了选项 2。以下是手动测试此选项的方法。如果您在电子应用程序之前运行SysInternal 的 Tcpview ( https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview ) 这样的应用程序,那么 Tcpview 将向您显示您的电子应用程序正在侦听的端口。Chrome 的开发工具端口就是其中之一。请记下这一点。现在进入Windows 中的%temp% 文件夹,因为这是包含 chromedriver 正在查找的 DevToolsActivePort 文件的临时文件夹的默认位置。在此文件夹中查找以scoped_dir为前缀的文件夹。默认情况下,chromedriver 每次运行时都会创建一个。为了保证您访问正确的文件夹,最好在运行之前使用--user-data-dir参数在 chromedriver 中预先设置此目录名称。进入此文件夹并创建一个名为DevToolsActivePort的新文件,并在第一行输入端口号,按 Enter(换行),然后在第二行输入任意数字。保存文件并关闭。如果您在 60 秒内手动完成整个过程,正在运行的 chromedriver 将读取该文件,获取 Chrome 开发工具的端口,连接到它并继续。
我开发了一个 AutoIT 脚本,可以自动执行上述过程,并且每次都将其包含在我自己的自动化运行和工作中。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
21669 次 |
| 最近记录: |