You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TS2345错误:WebDriver类型实参无法匹配WebDriver或(()=>WebDriver)形参

解决Selenidejs + TypeScript中TS2345类型不匹配错误

问题原因

TS2345错误源于Selenidejs的.driver()方法接受的不是Selenium原生的WebDriver实例,而是Selenidejs自身封装的Driver类型。直接传入原生WebDriver会导致类型不兼容。

解决方案

需要用Selenidejs提供的driver()工具函数,将原生WebDriver适配为符合要求的类型,同时正确配置ChromeOptions:

修改后的完整代码

import { Builder, Capabilities, Options } from 'selenium-webdriver';
import { Browser, driver } from 'selenidejs'; // 导入Selenidejs的driver适配工具

async function init() {
    // 配置ChromeOptions(示例添加无头模式参数)
    const chromeOptions = new Options();
    chromeOptions.addArguments('--headless=new');
    chromeOptions.addArguments('--disable-gpu'); // 可选额外参数

    // 构建并初始化原生Selenium WebDriver
    const nativeWebDriver = await new Builder()
        .withCapabilities(Capabilities.chrome())
        .setChromeOptions(chromeOptions) // 注入Chrome配置
        .build();

    // 将原生WebDriver适配为Selenidejs所需的Driver类型
    const selenideDriver = driver(nativeWebDriver);

    // 构建Selenidejs Browser实例
    const browser = Browser.configuredWith()
        .driver(selenideDriver) // 传入适配后的Driver
        .baseUrl('https://google.com')
        .timeout(4000)
        .build();

    // 示例使用:打开页面
    await browser.open('/');
}

关键说明

  1. 类型适配:通过selenidejs导出的driver()函数,把原生WebDriver转换成Selenidejs内部兼容的Driver类型,解决TS类型检查报错。
  2. ChromeOptions配置:在Selenium的Builder中通过setChromeOptions()方法传入配置好的Options对象,满足自定义浏览器参数的需求。

内容的提问来源于stack exchange,提问作者shir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:05:17