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

引入DotNetSeleniumExtras包时出现CS7069类型引用错误的问题咨询

问题描述

在基于C# .Net搭建Appium测试自动化框架,实现iOS与Android端应用自动化测试的过程中,计划采用页面对象设计模式(Page Object Design Pattern),因此需要使用PageFactory扩展能力。
通过NuGet包管理器引入DotNetSeleniumExtras.PageObjects.Core包后,编辑器出现4处红色波浪线报错,核心错误信息如下:

CS7069: Reference to type 'IFindsById" claims it is defined in 'WebDriver', but it could not be found.

报错示例截图:
报错截图
引入该扩展包的目的是实例化页面对象,落地页面对象设计模式,无法确定报错是缺少依赖、版本不兼容还是配置问题。相关业务测试代码如下:

using NUnit.Framework;
using OpenQA.Selenium.Appium.iOS;
using OpenQA.Selenium.Appium.PageObjects;
using SeleniumExtras.PageObjects;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;

namespace NativeApp_TestAutomation.Tests.Specs.IOS
{
    [TestFixture]
    public class LoginTest
    {
        private IOSDriver<IOSElement> _driver;
        private HomeScreen _pageObject;

        [OneTimeSetUp]
        public void BeforeAll()
        {
            var capabilities = Capabilities.GetIOSCapabilities("");
            var serverUri = Env.ServerIsRemote() ? AppiumServer.RemoteServerUri : AppiumServer.LocalServiceUri;
            _driver = new IOSDriver<IOSElement>(serverUri, capabilities, Env.LaunchTimeoutSeconds);

            var timeSpan = new TimeOutDuration(new TimeSpan(0, 0, 0, 5, 0));
            _pageObject = new HomeScreen(_driver);

            PageFactory.InitElements(_driver, _pageObject, new AppiumPageObjectMemberDecorator(timeSpan));
        }
    }
}

代码中多处位置出现相同报错,报错位置截图:
代码报错位置截图1
代码报错位置截图2


问题根因

该错误属于依赖版本不兼容问题:
Selenium 4.0及以上版本正式移除了旧版的IFindsById、IFindsByClassName等一系列元素查找接口,而当前引入的DotNetSeleniumExtras.PageObjects.Core包是基于Selenium 3.x版本的接口规范编译的,和项目中引用的高版本Appium依赖(默认依赖Selenium 4.x)产生类型定义冲突,最终导致编译器找不到对应类型报CS7069错误。


解决方案

根据项目实际需求选择以下任意一种方案即可解决:

  • 方案1:替换为官方适配的PageFactory实现(推荐)
    卸载当前安装的DotNetSeleniumExtras.PageObjects.Core第三方包,直接使用Appium官方随Appium.WebDriver 4.0+版本自带的PageObjects能力,该版本已经完全适配Selenium 4的接口定义,不存在兼容问题。
    操作步骤:

    1. 通过NuGet卸载DotNetSeleniumExtras.PageObjects.Core包
    2. 升级项目中Appium.WebDriver包到4.3.0及以上稳定版本
    3. 删除代码中using SeleniumExtras.PageObjects;的引用,PageFactory相关类都在OpenQA.Selenium.Appium.PageObjects命名空间下,原有初始化逻辑不需要改动即可正常编译运行。
  • 方案2:全量降级依赖到Selenium 3.x兼容版本线
    如果必须使用DotNetSeleniumExtras.PageObjects.Core包,需要将所有相关依赖统一降级到Selenium 3.x适配版本:

    1. 将Appium.WebDriver降级到3.0.0.2版本(该版本依赖Selenium.WebDriver 3.141.0)
    2. 安装DotNetSeleniumExtras.PageObjects.Core 3.12.0版本
      注意:该方案无法使用Selenium 4、Appium 2.x的新增特性,不适合长期维护的项目。
  • 方案3:移除第三方PageFactory依赖,自行实现轻量初始化逻辑
    如果不想处理第三方包的版本兼容问题,可以自行实现几十行代码的页面对象初始化逻辑,通过反射读取页面对象属性上的定位符标记,完成元素查找赋值,完全自主可控,不需要引入额外依赖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:18:03