我正在使用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的其他方法还是只是(尚未)实现?
最佳答案
对于版本3.6.0,WebDriver.Support.dll中没有PageFactory类(在Visual Studio中,您可以在对象资源管理器中打开此dll,然后看到没有此类。)因此,您只有通常的编译错误。
我在github https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/support/PageObjects/PageFactory.cs上查看了源代码
并参见PageFactory类中的预处理程序指令#if!NETSTANDARD2_0 ... #endif。我不知道NETSTANDARD2_0为什么会影响NETCORE2_0,并且不确定这是真正的原因,但是对于我们来说,作为库用户,PageFactory目前无法访问。
关于c# - 使用网络核心的PageFactory是否有其他选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47035004/