当 Google Chrome 已打开时启动 SeleniumWebDriver 实例

问题描述 投票:0回答:1

我希望能够运行使用 SeleniumWebDriver 和 Node.js 的自动化。
问题是,如果 Google Chrome 已经打开并被用户使用,我就无法启动自动化。

目前我通过在启动自动化之前关闭所有 Chrome 实例来解决这个问题,
但对我来说这似乎不是一个好的解决方案。

以下是我用来设置 selenium webdriver 的配置代码:

async function setupSelenium(headless) {
    const userDataDir =
        "/Users/matteobaldassarre/Library/Application Support/Google/Chrome/";

    const options = new Options()
        .addArguments(`--user-data-dir=${userDataDir}`)
        .addArguments("--remote-debugging-port=9222")
        .addArguments("--start-maximized");

    if (headless) options.addArguments("--headless=new")

    let driver = await new Builder()
        .forBrowser("chrome")
        .setChromeOptions(options)
        .build();

    await driver
        .manage()
        .setTimeouts({ implicit: 10000 });

    return driver;
}

请记住,我想使用默认配置文件运行 Chrome(当另一个 chrome 实例打开时用户可能正在使用的配置文件)。

我尝试使用 --remote-debugging-port 参数,因为这似乎是使用相同配置文件启动两个实例的唯一方法,但是当我运行自动化时,我收到此错误:

session not created: Chrome failed to start: exited normally. 
(chrome not reachable) 
(The process started from chrome location /Applications/Google Chrome.app/Contents/MacOS/Google Chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
javascript node.js google-chrome selenium-webdriver
1个回答
0
投票

要打开一个新窗口,您可以使用 newWindow() 方法。具体方法如下:

// Opens a new window and switches to new window
driver.switchTo().newWindow(WindowType.WINDOW);
© www.soinside.com 2019 - 2024. All rights reserved.