selenium - 使用 selenium js 连接到 geckodriver
问题描述
我不是 Selenium 的专家,所以我可能会在这里遗漏一些东西。
- 公司的一个软件用 Geckodriver 启动了一个 Firefox。
- 我想从我的 JavaScript 代码连接/附加到这个浏览器。
我知道 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
错误
解决方案
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))
)
);