在另一种方法中调用方法的对象

时间:2016-07-26 23:30:06

标签: c# selenium

我正在尝试使用下面的Instance Object来调用close()方法。它给出了一个错误:当前上下文中不存在“实例”这个名称“。任何人都可以建议我做错了什么。

public class Trial
{
     public static void Initialize()
    {
        IWebDriver Instance = null;
        Instance = new FirefoxDriver();
        Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
        Instance.Navigate().GoToUrl("www.google.com");
    }
     public static void Close()
     {
         Instance.Close();
     }


}

2 个答案:

答案 0 :(得分:3)

你应该花点时间阅读一些关于变量范围的文章。这是一篇这样的文章,但还有很多很多。

https://msdn.microsoft.com/en-us/library/ms973875.aspx

您最初在Instance方法中声明了Initialize()。这意味着它只能在该方法的范围中看到。如果要在别处引用它,则必须在要访问它的范围内声明它。在代码示例中执行此操作的一种方法是将Instance的声明移到Trial类中。完成后,Initialize()Close()方法都在其范围内(class),因此他们都可以访问变量。

public class Trial
{
    static IWebDriver Instance = null;

    public static void Initialize()
    {
        Instance = new FirefoxDriver();
        Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
        Instance.Navigate().GoToUrl("www.google.com");
    }
    public static void Close()
    {
        Instance.Close();
    }
}

答案 1 :(得分:1)

InstanceInitialize()的“本地”,因此Close()无法看到 - 您可能希望Instance成为Trial的成员1}}类,以便所有方法都可以看到它。