selenium 当前上下文中不存在名称“PageFactory”

2ul0zpep  于 2023-01-05  发布在  其他
关注(0)|答案(8)|浏览(175)

我正在用c#创建一个测试自动化框架,在项目的顶部我有“usingOpenQA.Selenium.Support.PageObjects;“,但是当我尝试引用PageFactory.initElements(driver,PageName)时,我看到消息“名称'PageFactory'在当前上下文中不存在”。
我认为PageFactory类是Selenium. supportnuget包的一部分。在线教程似乎引用PageFactory的方式和我一样,没有额外的导入,有什么我错过了吗?
NuGet软件包:

  • 使用Selenium.WebDriver版本3.9.1
  • 使用Selenium。支持版本3.9.1
  • 使用NUnit 3.9.0
  • 使用NUnit 3测试适配器3.9.0
  • 微软.NET.测试软件开发包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);
        }
    }
}
bnlyeluc

bnlyeluc1#

如果有人遇到同样的问题,请从NuGet软件包管理器安装以下软件:第一个月

lsmd5eda

lsmd5eda2#

我最终只是创建了一个新项目,并移植了所有的东西,但有一点不同,我创建的项目类型是Visual C#〉测试〉单元测试项目,之前我创建的项目类型是Visual C#〉.Net Core〉类库项目(我正在学习教程)。
我不太确定这是否改变了什么,或者只是意味着当我下载并安装NuGet包时,我有了一个清晰的项目,但是我现在可以访问PageFactory类和相关的方法了。感谢所有回复的人。

tpxzln5u

tpxzln5u3#

对所有有同样问题的人的小更新。
https://github.com/SeleniumHQ/selenium/issues/4387
"* 对此问题的进一步讨论不会改变删除. NET PageFactory实现的决定 *"

aor9mmx1

aor9mmx14#

有同样的问题,试图卸载和重新安装,但它不工作。然后我去寻找NuGet包与Selenium的名称,并发现Selenium.support包是独立于主Selenium.webdriver包。所以,如果你有这个问题,回去,并确保你已经安装了Selenium.webdriver和Selenium.support包通过Nuget。

dluptydi

dluptydi5#

PageFactory仍然可用
参考包

<PackageReference Include="DotNetSeleniumExtras.PageObjects" Version="3.11.0" />
<PackageReference Include="DotNetSeleniumExtras.PageObjects.Core" Version="3.12.0" />

然后

using SeleniumExtras.PageObjects;

 HomePage loginPage = new HomePage(driver);
 PageFactory.InitElements(driver, HomePage)

PageFactory.InitElements为空。

8hhllhi2

8hhllhi26#

正如您所提到的,当您尝试引用PageFactory.initElements(driver, PageName)时,您会看到如下错误消息:

The name 'PageFactory' does not exist in the current context".

如果您查看PageFactory Class的API文档,它会清楚地提到以下内容:

  • 系统对象:* * OpenQA. selenium .支持.页面对象.页面工厂**
  • 命名空间:OpenQA. selenium .支持.页面对象

因此,该错误实际上意味着**Selenium.Support.PageObjects包的安装存在一些问题。
溶液
正确的解决方案是完全 * 卸载 * 与
Selenium.WebDriverSelenium.Support.PageObjects**相关的软件包,然后通过 * NuGet Manager * 重新安装。
注意:您可以在此处找到类似的讨论。

更新

由于您仍然看到相同的错误,您是否可以对代码进行如下小更改:
替换:

HomePage homePage = new HomePage(driver);
PageFactory.initElements(driver, homePage);

其中:

HomePage homePage = PageFactory.initElements(driver, HomePage);
o3imoua4

o3imoua47#

1.从NuGet包安装:点网 selenium 附加项.页面对象.核心
1.您可以使用PageFactory.InitElements(驱动程序,本);

km0tfn4u

km0tfn4u8#

如果其他人遇到这个问题,为什么你现在找不到PageFactory的原因很简单:不存在
也就是说,在Selenium.Support的3.11.0版本中,PageFactoryExpectedConditions被标记为过时。在Selenium.Support的3.12.0版本中,它们被完全删除。更多关于here的主题。
解决这个问题的方法是简单地将DotNetSeleniumExtras添加到您的软件包中,因为这些软件包被移动到单独的repository中。您还可以找到有用的Dreamescaper的forkNuGet),它添加了.NET核心支持,直到原始的repo找到所有者。

相关问题