我如何获得硒来打开我的电子应用程序?

How do I get selenium to open my electron app?

我正在尝试设置 Selenium 来测试我的电子应用程序。到目前为止,我有 Electron 文档中的代码,但是,这只会打开 HTML 文件,而不是我的实际应用程序。这是我的代码:

import * as path from "path";

const webdriver = require('selenium-webdriver');

const driver = new webdriver.Builder()
    // The "9515" is the port opened by ChromeDriver.
    .usingServer('http://localhost:9515')
    .withCapabilities({
        'chromeOptions': {
            // Here is the path to your Electron binary.
            binary: '../../node_modules/electron/dist/electron.exe'
        }
    })
    .forBrowser('chrome')
    .build();

const current_path = path.join(__dirname, "../../dist/public/index.html");

driver.get('file://' + current_path);

我怎样才能让它打开我的应用程序?

几天来我一直在努力解决这个问题,所有其他文章和 Whosebug 帖子要么指向 Spectron(现已弃用),要么没有解释如何打开我自己的应用程序而不是不同的网站。

编辑:我发现在 chromeOptions 对象中添加 "args": ['--app=PATH_TO_PROJECT_DIR')],并将名称更改为 "goog:chromeOptions",使其打开到正确的文件路径,但是,现在我收到以下错误:

WebDriverError: unknown error: no chrome binary at ../../node_modules/electron/dist/electron.exe

改回“chromeOptions”会阻止它打开应用程序目录,但会打开一个空白 chrome window.

解决方案是:

  1. '../../node_modules/electron/dist/electron.exe'替换为path.join(__dirname, '../../node_modules/electron/dist/electron.exe')
  2. chromeOptions更改为goog:chromeOptions
  3. "args": [path.join(__dirname, '../../')]添加到goog:chromeOptions对象。

工作代码:

import * as path from "path";

const webdriver = require('selenium-webdriver');

const driver = new webdriver.Builder()
    // The "9515" is the port opened by ChromeDriver.
    .usingServer('http://localhost:9515')
    .withCapabilities({
        'goog:chromeOptions': {
            // Here is the path to your Electron binary.
            "binary": path.join(__dirname, '../../node_modules/electron/dist/electron.exe'),
            "args": ['--app=' + path.join(__dirname, "../../")]
        }
    })
    .forBrowser('chrome')
    .build();