我正在用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);
}
}
}
8条答案
按热度按时间bnlyeluc1#
如果有人遇到同样的问题,请从NuGet软件包管理器安装以下软件:第一个月
lsmd5eda2#
我最终只是创建了一个新项目,并移植了所有的东西,但有一点不同,我创建的项目类型是Visual C#〉测试〉单元测试项目,之前我创建的项目类型是Visual C#〉.Net Core〉类库项目(我正在学习教程)。
我不太确定这是否改变了什么,或者只是意味着当我下载并安装NuGet包时,我有了一个清晰的项目,但是我现在可以访问PageFactory类和相关的方法了。感谢所有回复的人。
tpxzln5u3#
对所有有同样问题的人的小更新。
:https://github.com/SeleniumHQ/selenium/issues/4387
"* 对此问题的进一步讨论不会改变删除. NET PageFactory实现的决定 *"
aor9mmx14#
有同样的问题,试图卸载和重新安装,但它不工作。然后我去寻找NuGet包与Selenium的名称,并发现Selenium.support包是独立于主Selenium.webdriver包。所以,如果你有这个问题,回去,并确保你已经安装了Selenium.webdriver和Selenium.support包通过Nuget。
dluptydi5#
PageFactory仍然可用
参考包
然后
PageFactory.InitElements
为空。8hhllhi26#
正如您所提到的,当您尝试引用
PageFactory.initElements(driver, PageName)
时,您会看到如下错误消息:如果您查看PageFactory Class的API文档,它会清楚地提到以下内容:
因此,该错误实际上意味着**
Selenium.Support.PageObjects
包的安装存在一些问题。溶液
正确的解决方案是完全 * 卸载 * 与
Selenium.WebDriver
和Selenium.Support.PageObjects
**相关的软件包,然后通过 * NuGet Manager * 重新安装。注意:您可以在此处找到类似的讨论。
更新
由于您仍然看到相同的错误,您是否可以对代码进行如下小更改:
替换:
其中:
o3imoua47#
1.从NuGet包安装:点网 selenium 附加项.页面对象.核心
1.您可以使用PageFactory.InitElements(驱动程序,本);
km0tfn4u8#
如果其他人遇到这个问题,为什么你现在找不到PageFactory的原因很简单:不存在。
也就是说,在Selenium.Support的3.11.0版本中,PageFactory和ExpectedConditions被标记为过时。在Selenium.Support的3.12.0版本中,它们被完全删除。更多关于here的主题。
解决这个问题的方法是简单地将DotNetSeleniumExtras添加到您的软件包中,因为这些软件包被移动到单独的repository中。您还可以找到有用的Dreamescaper的fork(NuGet),它添加了.NET核心支持,直到原始的repo找到所有者。