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

如何编写方法实现无错传递By与string参数?解析By参数报错原因

构造函数用(By, string)报错的原因分析

你遇到的问题核心出在基类构造函数匹配和类型兼容性上,另外代码里的重复类定义也会直接触发错误,具体拆解:

主要原因

  • 基类BaseElement没定义接受(By, string)的构造函数:你写的Banner构造函数调用base(locator, name)时,基类只有(string, string)的构造函数,找不到对应重载,直接报错。
  • By和string类型不兼容:By是Selenium的定位器对象,和字符串完全是两种类型,基类如果没做类型转换处理,没法直接把By当作string传入原构造函数,这会触发类型不匹配错误。
  • 重复定义Banner类:代码里写了两个完全一样的internal class Banner : BaseElement,编译器会直接报重复定义的错误,这是基础语法问题。

怎么解决

  1. 先合并重复的Banner类,改成带两个构造函数重载的单类:
internal class Banner : BaseElement
{
    public Banner(string locator, string name) : base(locator, name)
    {
    }

    public Banner(By locator, string name) : base(locator.ToString(), name)
    // 如果基类能直接接受By,就替换成base(locator, name),否则转成字符串
    {
    }
}
  1. 检查BaseElement类:如果可以修改基类,就给它加一个public BaseElement(By locator, string name)的构造函数重载;如果不能改基类,就把By对象转换成基类需要的字符串格式(比如提取By的定位表达式,不同Selenium版本的API可能有差异,比如用locator.ToString()或者专门的方法获取定位字符串)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:22:46