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('/'); }
关键说明
- 类型适配:通过
selenidejs导出的driver()函数,把原生WebDriver转换成Selenidejs内部兼容的Driver类型,解决TS类型检查报错。 - ChromeOptions配置:在Selenium的
Builder中通过setChromeOptions()方法传入配置好的Options对象,满足自定义浏览器参数的需求。
内容的提问来源于stack exchange,提问作者shir
相关产品推荐
相关产品推荐

