首页 > 解决方案 > 使用页面对象模式设计时驱动程序具有空值

问题描述

当我从 BasePage 属性获取值时,驱动程序具有空值:


    public abstract class BasePage
    {
        public static IWebDriver Driver { get; }
        public BasePage(IWebDriver driver)
        {

        }
    }


驱动程序实例在不同的类中创建


    [Binding]
    public class WebDriverSupport
    {
        private readonly IObjectContainer objectContainer;
        private ChromeDriver webdriver;

        public WebDriverSupport(IObjectContainer objectContainer)
        {
            this.objectContainer = objectContainer;
        }

        [BeforeScenario]
        public void InitializeWebDriver()
        {
            this.webdriver = new ChromeDriver();
            objectContainer.RegisterInstanceAs<IWebDriver>(webdriver);
        }
    }

我认为我在实例开始之前获得了价值。你说什么?由于所有调用都使用基类,这将是一个问题。

标签: c#sqlseleniumselenium-webdriverselenium-chromedriver

解决方案


我通过以下方式解决了这个问题:

1 添加设置到属性

 public static IWebDriver Driver { get; set; }

2 - 将驱动程序 ID 传递给 BasePage.Driver

     public void Initialize()
        {
            this.webdriver = new ChromeDriver();
            BasePage.Driver = webdriver;
            objectContainer.RegisterInstanceAs<IWebDriver>(this.webdriver);
        }

推荐阅读