javascript - 使用 selenium js 连接到已经启动的 Web 驱动程序

标签 javascript selenium selenium-webdriver

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

  • corp 中的一个软件使用 ChromeDriver 启动 google chrome。
  • 我想从我的 JavaScript 代码附加到这个浏览器。

  • 我知道 ChromeDriver 启动的端口:
    Starting ChromeDriver 77.0.3865.10 (bc3579f611bbc73331171afe020ec7a45e6ccc55-refs/branch-heads/3865@{#93}) on port 55848
    

    我尝试从 JS 连接:
    const webdriver = require('selenium-webdriver')
    
    void async function() {
        let driver = await new webdriver.Builder().forBrowser('chrome').usingServer('http://localhost:55848/').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 not created: This version of ChromeDriver only supports Chrome version 77
    

    查了一下运行的chrome版本是77,ChromeDriver也是77。这个corp软件启动的Chrome其实是Chrome的便携版。我的电脑上安装了 Chrome 76。我能想到的是我写的代码试图启动一个新的 Chrome 实例。那里的版本不匹配。

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

    更新:

    我设法用 Firefox 做同样的事情。 Firefox 使用 geckodriver 启动。我仍然无法连接它。错误信息是:
    SessionNotCreatedError: Session is already started
    

    所以我很确定这与 chrome 版本无关,但它尝试创建一个新 session 而不是连接现有 session 。

    最佳答案

    是的,问题出在 chrome 驱动程序的版本上。获取 chromedriver.exe 版本 77... 否则您将不断收到此错误,因为最新版本的 selenium 3.141.59 不支持其他版本的 chrome。转到此链接 (https://www.seleniumhq.org/download/) 并获取 chromedriver.exe 最新版本,我认为它会解决您的问题。

    关于javascript - 使用 selenium js 连接到已经启动的 Web 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242743/

    相关文章:

    javascript - 在 UIWebView 中查找并突出显示带有变音符号文本的阿拉伯语

    javascript - 在应用程序中包含 Polyfill 包

    ruby-on-rails - 带有 Rails 测试的 Dockerized Selenium

    selenium - Protractor webdriver-manager 需要永远启动 Selenium

    python - selenium.common.exceptions.WebDriverException : Message: unknown error: Failed to create a Chrome process

    java - 如何在 Selenium 测试中清除浏览器缓存

    javascript - 为什么子元素悬停时会触发mouseout?

    javascript - 在 mongodb 中使用外部引用进行聚合

    java - 驱动程序可执行文件的路径必须由webdriver.chrome.driver设置; IllegalStateException

    css - 有没有一种方法可以使用Selenium测试响应式CSS?