如何设置为对象的实例,如下所示?

时间:2017-06-04 10:29:41

标签: c# selenium variables webdriver set

我想帮助解决我的问题,请: 从我的测试类开始,我尝试运行我的测试代码:

1 => 2
8 => 2
9 => 2

但是,它失败了,因为它没有初始化“驱动”变量。

(我得到了msg:system.nullReferenceException:WebDriver浏览器实例未初始化。你应该首先调用方法InitBrowser)

我从http://toolsqa.com/selenium-webdriver/c-sharp/browser-factory-or-webdriver-factory/

复制的InitBrowser()函数代码下面
[setUp]
public void setup()
{
BrowserFactory.InitBrowser("Chrome");
}

}

非常感谢!

2 个答案:

答案 0 :(得分:2)

您的代码中存在错误。

您应该更改以下每一行:

if (Driver == null)

到此:

if (driver == null)

另一种选择是改变来自:

    get
    {
        if (driver == null)
            throw new NullReferenceException("The WebDriver browser instance was not initialized. You should first call the method InitBrowser.");
        return driver;
    }

为:

    get
    {
        return driver;
    }

答案 1 :(得分:1)

3月,尝试粘贴项目的完整源代码。项目中的ChromeDriver(),FirefoxDriver(),InternetExplorerDriver()的C#类在哪里?你有没有提前编码? 这里 IWebDriver 驱动程序是属性

公共静态IWebDriver驱动程序的getter中不需要空检查

public BrowserFactory()
        {
            Driver = new FirefoxDriver();
        }

        public static IWebDriver Driver
        {
            get
            {

                return driver;
            }
            private set
            {
                driver = value;
            }
        }

将类加载到静态初始值设定项或构造函数中时,将IWebDriver驱动程序的属性设置为实例:

即使在初始化驱动程序之前,也会调用get属性,将null检查重新评估为true&因此抛出异常。

要问自己的问题:

  1. 您是否为Firefox,Chrome和&添加了库文件? IE ??
  2. 它是项目配置文件的一部分吗?
  3. 如果没有添加,最好的添加方法是在visual studio中使用Nuget Package manager 4.这些引用应该是您项目的一部分。让我发一个我试过的类似项目的截图 References to library files 5.查看Nuget Package Manager的图片 Click Manage Nuget Packages 6.单击Manage Nuget Packages,浏览Available Packages 7。Install Nuget Package

  4. 最后,您没有设置新的驱动程序实例

  5. [pre]

    {
        class Driver
        {
            public enum Browser
            {
                chrome,
                firefox,
                ie,
            }
            public IWebDriver getDriver(string browser_type)
            {
                Browser parsed_browser_type; IWebDriver driver=null;
                bool passed_type = browser_type != null ? true : false;
                if (passed_type)
                {
                    Enum.TryParse(browser_type, out parsed_browser_type);
    
                    switch (browser_type.ToLower())
                    {
    
                        case "chrome":
                           driver= new ChromeDriver(new ChromeOptions { Proxy = null });
                            break;
                        case "firefox":
                           driver= new FirefoxDriver();
                            break;
                        case "ie":
                            driver= new InternetExplorerDriver(new InternetExplorerOptions { Proxy = null });
                            break;
                        default:
                        case "":
                           throw new Exception("Browser cannot be null");
                    }
                }
                return driver;
            }
        }
    }
    

    [/预]