实例化传递给其构造函数的参数显示的类 字段初始值设定项无法引用非静态字段



我已经开始用C#在Selenium Webdriver中创建一个框架。 我有一个基类和一个主页类。 主页继承基类。当我实例化主页类时,我收到错误:

字段

初始值设定项不能引用非静态字段、方法或属性autobot_automation。Base.BasePageDriver.get

我已经在基类中声明了驱动程序变量,并在构造函数中对其进行了初始化。 我不知道为什么编译器显示错误。

我的基类是:

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
}
}

我的主页类是:

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);       
        }
    }
}

建议请帮助我解决这个问题。谢谢

BasePagepublic HomePage homepage = new HomePage(Driver);的行将在构造函数之前执行。它将使用 driver(此时null(创建新的 HomePage 对象,这反过来使用 null 初始化 Driver 属性。

我建议您创建某种支持类,该类将保存HomePage实例而不是BasePage

如果您坚持将其保留在那里(恕我直言,这不是一个好的设计(,请创建一个构造函数,该构造函数将接收一个HomePage对象作为参数。

最新更新