我正在用C#创建一个测试自动化框架。在项目的顶部,我有“正在使用OpenQA.Selenium.Support.PageObjects;”,但是,当我尝试引用PageFactory.initElements(driver,PageName)时,我看到消息“名称'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);
            }
        }
    }
    

    最佳答案

    如果其他任何人都遇到了这个问题,那么现在为什么找不到PageFactory的原因很简单:它不存在

    即,在Selenium.Support 3.11.0版本中, PageFactory ExpectedConditions 被标记为已过时。
    使用Selenium.Support 3.12.0,它们已被完全删除。有关该主题的更多信息here

    解决方案是,只需将 DotNetSeleniumExtras 添加到您的软件包中,然后将它们移动到单独的repository即可。人们还可以找到有用的Dreamescaper的fork(NuGet),它已经添加了.NET Core支持,直到原始存储库找到所有者为止。

    关于c# - 名称 'PageFactory'在当前上下文中不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48734097/

    10-11 05:40