实例化一个 class 传递给它的构造函数的参数显示字段初始值设定项无法引用非静态字段
Instantiating a class the parameter passed to it's constructor shows A field initializer cannot reference the non static field
我已经开始在 C# 的 Selenium Webdriver 中创建框架。我有一个基础 class 和一个主页 class。 HomePage 继承基础class。
当我实例化主页 class 时出现错误:
字段初始值设定项不能引用非静态字段、方法或 属性 autobot_automation.Base.BasePageDriver.get
我已经在基 class 中声明了驱动程序变量,并在构造函数中对其进行了初始化。我不知道为什么编译器会显示错误。
我的基地 Class 是:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using autobot_automation.Pages.HomePage;
using autobot_automation.Pages.Base;
namespace autobot_automation.Base
{
public class BasePage
{
public IWebDriver Driver { get; set; }
public BasePage(IWebDriver driver)
{
Driver = driver;
PageFactory.InitElements(Driver, this);
}
public void GoToURL(string url)
{
Driver.Navigate().GoToUrl(url);
}
#region Page Objects
public HomePage homepage = new HomePage(Driver);
#endregion
}
}
我的主页 Class 是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using autobot_automation.Pages;
using autobot_automation.Base;
namespace autobot_automation.Pages.HomePage
{
public class HomePage : BasePage
{
//private IWebDriver Driver { get; set; }
public HomePage(IWebDriver driver) : base(driver)
{
//Driver = driver;
//PageFactory.InitElements(Driver, this);
}
}
}
请提出建议帮助我解决这个问题。
谢谢
BasePage
中的public HomePage homepage = new HomePage(Driver);
行将在构造函数之前执行。它将使用 driver
(此时 null
)创建新的 HomePage
对象,然后用 null
初始化 Driver
属性。
我建议您创建某种支持 class,它将容纳 HomePage
实例而不是 BasePage
。
如果你坚持把它放在那里(恕我直言,这不是一个好的设计)创建一个构造函数,它将接收一个 HomePage
对象作为参数。
我已经开始在 C# 的 Selenium Webdriver 中创建框架。我有一个基础 class 和一个主页 class。 HomePage 继承基础class。 当我实例化主页 class 时出现错误:
字段初始值设定项不能引用非静态字段、方法或 属性 autobot_automation.Base.BasePageDriver.get
我已经在基 class 中声明了驱动程序变量,并在构造函数中对其进行了初始化。我不知道为什么编译器会显示错误。
我的基地 Class 是:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using autobot_automation.Pages.HomePage;
using autobot_automation.Pages.Base;
namespace autobot_automation.Base
{
public class BasePage
{
public IWebDriver Driver { get; set; }
public BasePage(IWebDriver driver)
{
Driver = driver;
PageFactory.InitElements(Driver, this);
}
public void GoToURL(string url)
{
Driver.Navigate().GoToUrl(url);
}
#region Page Objects
public HomePage homepage = new HomePage(Driver);
#endregion
}
}
我的主页 Class 是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using autobot_automation.Pages;
using autobot_automation.Base;
namespace autobot_automation.Pages.HomePage
{
public class HomePage : BasePage
{
//private IWebDriver Driver { get; set; }
public HomePage(IWebDriver driver) : base(driver)
{
//Driver = driver;
//PageFactory.InitElements(Driver, this);
}
}
}
请提出建议帮助我解决这个问题。 谢谢
BasePage
中的public HomePage homepage = new HomePage(Driver);
行将在构造函数之前执行。它将使用 driver
(此时 null
)创建新的 HomePage
对象,然后用 null
初始化 Driver
属性。
我建议您创建某种支持 class,它将容纳 HomePage
实例而不是 BasePage
。
如果你坚持把它放在那里(恕我直言,这不是一个好的设计)创建一个构造函数,它将接收一个 HomePage
对象作为参数。