使用 net core 的 PageFactory 是否有任何替代方案
Is there any alternative for PageFactory using net core
我正在使用 Selenium v3.6.0 和 .NET Core 2.0,以下代码在 PageFactory.InitElements 上给我一个错误,说它在当前上下文中不存在。
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
namespace Example
{
public class Form
{
[FindsBy(How = How.Name, Using = "Filter")] // This does exist in current context using .NET Core
public IWebElement Filter { get; set; }
[FindsBy(How = How.TagName, Using = "Button")]
public IWebElement Button;
public Form(IWebDriver driver)
{
PageFactory.InitElements(driver, this); // This doesn't exist in current context using .NET Core
}
}
}
我对此有点困惑,因为属性 FindsBy、FindsByAll 和 FindsBySequence 在 OpenQa.Selenium.Support.PageObjects
命名空间中都可用,但 PageFactory 不可用。据我所知,这些属性只适用于 PageFactory。
使用 .NET Core 是否有不同的方法,或者它是否(尚未)实现?
WebDriver.Support.dll 中没有 3.6.0 版的 PageFactory class(在 visual studio 中你可以在对象资源管理器中打开这个 dll 并看到没有这样的 class).所以你只是遇到了常见的编译错误。
我在 github https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/support/PageObjects/PageFactory.cs 上查看了源代码
并查看 PageFactory class 中的预处理器指令 #if !NETSTANDARD2_0 ... #endif。我不知道为什么 NETSTANDARD2_0 会影响 NETCORE2_0,也不确定这是不是真正的原因,但对于我们这些图书馆用户来说,PageFactory 目前无法访问。
是的,如本视频中所述,不支持 https://www.youtube.com/watch?v=xd5TCWmaxGI
谢谢,
卡尔提克 KK
不特定于 .Net Core,但对于 .Net Standard 2.0 和 .Net Framework(s) 3.5、4.0 和 4.5,您应该能够将 DotNetSeleniumExtras.PageObjects 添加到您的项目中以获得 PageFactory 功能一次 OpenQA.Selenium正式放弃。您可以通过以下方式引用它:使用 SeleniumExtras.PageObjects;
我使用的是 WebDriver V3.141.0.0 和 .NET v4.5,您可以按如下方式替换您的代码:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
namespace Example
{
public class Form
{
public IWebElement Filter => Driver.FindElement(By.Name("Filter"));
/*
[FindsBy(How = How.Name, Using = "Filter")] // This does exist in current context using .NET Core
public IWebElement Filter { get; set; }
*/
public IWebElement Button => Driver.FindElement(By.TagName("Button"));
/*
[FindsBy(How = How.TagName, Using = "Button")]
public IWebElement Button;
*/
public Form(IWebDriver driver)
{
//PageFactory.InitElements(driver, this); // This doesn't exist in current context using .NET Core
}
}
}
DotNetSeleniumExtras.PageObjects.Core 支持 .NETStandard 2.0。
库包含 PageFactory
和支持 类。这是 DotNetSeleniumExtras
.
的分支
已在 netcore3.1 和 Net5 中测试,包支持 PageFactory.InitElements(driver, this);
使用:
Install-Package DotNetSeleniumExtras.PageObjects.Core -Version 3.12.0
using OpenQA.Selenium;
using SeleniumExtras.PageObjects;
我正在使用 Selenium v3.6.0 和 .NET Core 2.0,以下代码在 PageFactory.InitElements 上给我一个错误,说它在当前上下文中不存在。
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
namespace Example
{
public class Form
{
[FindsBy(How = How.Name, Using = "Filter")] // This does exist in current context using .NET Core
public IWebElement Filter { get; set; }
[FindsBy(How = How.TagName, Using = "Button")]
public IWebElement Button;
public Form(IWebDriver driver)
{
PageFactory.InitElements(driver, this); // This doesn't exist in current context using .NET Core
}
}
}
我对此有点困惑,因为属性 FindsBy、FindsByAll 和 FindsBySequence 在 OpenQa.Selenium.Support.PageObjects
命名空间中都可用,但 PageFactory 不可用。据我所知,这些属性只适用于 PageFactory。
使用 .NET Core 是否有不同的方法,或者它是否(尚未)实现?
WebDriver.Support.dll 中没有 3.6.0 版的 PageFactory class(在 visual studio 中你可以在对象资源管理器中打开这个 dll 并看到没有这样的 class).所以你只是遇到了常见的编译错误。
我在 github https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/support/PageObjects/PageFactory.cs 上查看了源代码 并查看 PageFactory class 中的预处理器指令 #if !NETSTANDARD2_0 ... #endif。我不知道为什么 NETSTANDARD2_0 会影响 NETCORE2_0,也不确定这是不是真正的原因,但对于我们这些图书馆用户来说,PageFactory 目前无法访问。
是的,如本视频中所述,不支持 https://www.youtube.com/watch?v=xd5TCWmaxGI
谢谢, 卡尔提克 KK
不特定于 .Net Core,但对于 .Net Standard 2.0 和 .Net Framework(s) 3.5、4.0 和 4.5,您应该能够将 DotNetSeleniumExtras.PageObjects 添加到您的项目中以获得 PageFactory 功能一次 OpenQA.Selenium正式放弃。您可以通过以下方式引用它:使用 SeleniumExtras.PageObjects;
我使用的是 WebDriver V3.141.0.0 和 .NET v4.5,您可以按如下方式替换您的代码:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
namespace Example
{
public class Form
{
public IWebElement Filter => Driver.FindElement(By.Name("Filter"));
/*
[FindsBy(How = How.Name, Using = "Filter")] // This does exist in current context using .NET Core
public IWebElement Filter { get; set; }
*/
public IWebElement Button => Driver.FindElement(By.TagName("Button"));
/*
[FindsBy(How = How.TagName, Using = "Button")]
public IWebElement Button;
*/
public Form(IWebDriver driver)
{
//PageFactory.InitElements(driver, this); // This doesn't exist in current context using .NET Core
}
}
}
DotNetSeleniumExtras.PageObjects.Core 支持 .NETStandard 2.0。
库包含 PageFactory
和支持 类。这是 DotNetSeleniumExtras
.
已在 netcore3.1 和 Net5 中测试,包支持 PageFactory.InitElements(driver, this);
使用:
Install-Package DotNetSeleniumExtras.PageObjects.Core -Version 3.12.0
using OpenQA.Selenium;
using SeleniumExtras.PageObjects;