首页 > 解决方案 > 使用 selenium js 连接到 geckodriver

问题描述

我不是 Selenium 的专家,所以我可能会在这里遗漏一些东西。

我知道 Web 服务器启动的端口和会话标识符。

我尝试从 JS 连接:

const webdriver = require('selenium-webdriver')

void async function() {
    let driver = await new webdriver.Builder().forBrowser('firefox').usingServer('http://localhost:55849/').build();

    await driver.get('http://www.google.com/ncr');
    await driver.findElement(By.name('q')).sendKeys('webdriver');
    await driver.findElement(By.name('btnG')).click();
    await driver.wait(until.titleIs('webdriver - Google Search'), 1000);

    driver.quit();
}();

连接不成功。我能想到的是这段代码试图启动一个新实例。

有一条错误消息:

SessionNotCreatedError: Session is already started

知道如何连接到现有的吗?并控制它?

我已经尝试了文档中的所有内容:https ://www.npmjs.com/package/selenium-webdriver

我什至尝试连接http://localhost:55849/wd/hub,但后来收到WebDriverError: HTTP method not allowed错误

标签: seleniumselenium-webdrivergeckodriver

解决方案


使用selenium-webdriver/http

const webdriver = require('selenium-webdriver')
const http= require('selenium-webdriver/http')

let sessionId = '9aad751d-eb9b-4c92-92f3-298c733f6ec7';
let url = 'http://localhost:57538';

let driver = new webdriver.WebDriver(
    sessionId,
    new http.Executor(Promise.resolve(url)
        .then(
            url => new http.HttpClient(url, null, null))
    )
);

推荐阅读