当前上下文中不存在名称"PageFactory"

Bra*_*ite 8 c# selenium page-factory

我正在用c#创建一个测试自动化框架.在项目中,我有"的顶部使用OpenQA.Selenium.Support.PageObjects;",但是当我尝试引用PageFactory.initElements(驱动程序,页面名称),我看到消息"名'PageFactory’不存在中目前的背景".

我认为PageFactory类是作为Selenium.Support nu get包的一部分包含的.在线教程似乎以与我没有额外导入相同的方式引用PageFactory,有什么我缺少的吗?

NuGet包:

  • 使用Selenium.WebDriver版本3.9.1
  • 使用Selenium.Support版本3.9.1
  • 使用NUnit 3.9.0
  • 使用NUnit3TestAdapter 3.9.0
  • Microsoft.NET.Test.Sdk 15.5.0
  • 代码如下:

    using NUnit.Framework;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    using OpenQA.Selenium.Support.PageObjects;
    using System;
    using System.IO;
    
    namespace Framework.TestCases
    {
        class TestCase
        {
            [Test]
            public void Test()
            {
                String pathToDrivers = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\Drivers";
                IWebDriver driver = new ChromeDriver(pathToDrivers);
                String searchTerm = "Search Term";
    
                driver.Url = "https://website.com/";
                driver.Manage().Window.Maximize();
    
                HomePage homePage = new HomePage(driver);
                PageFactory.initElements(driver, homePage);
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    小智 6

    如果其他人遇到这个问题,现在找不到 PageFactory 的原因很简单:它不存在

    也就是说,随着 Selenium.Support 的 3.11.0 版本,PageFactoryExpectedConditions被标记为过时。在 Selenium.Support 3.12.0 中,它们已被完全删除。有关该主题的更多信息,请点击此处

    解决这个问题的方法是简单地将DotNetSeleniumExtras添加到您的包中,因为它们已被移动到单独的存储库。人们还可以找到有用的 Dreamescaper 的分支( NuGet ),它添加了 .NET Core 支持,直到原始存储库找到所有者。


    小智 5

    如果有人遇到同样的问题,请从 NuGet 包管理器安装以下内容: DotNetSeleniumExtras.PageObjects.Core (3.12.0)


    Bra*_*ite 2

    我最终只是创建了一个新项目,并移植了所有内容,但有一点不同,我创建的项目类型是 Visual C# > 测试 > 单元测试项目,之前我创建的项目是 Visual C# > .Net Core > 类库项目(我正在遵循教程)。

    我不太确定这是否改变了任何内容,或者只是意味着当我重新下载并安装 NuGet 包时我有一个清晰的项目,但是我现在可以访问 PageFactory 类和相关方法。感谢所有回复的人。