Selenium类实例化

时间:2017-08-09 15:08:33

标签: c# selenium

您好我在使用Instantiated类中的方法时遇到问题。我对selenium和C#很新,但这是我开始的代码......

第1课

 [TestClass]
    public class UnitTest1
    {
        Class2 myClass2 = new Class2();

        static IWebDriver webDriver;

        [AssemblyInitialize]
        public static void invokeBrowser(TestContext context)
        {
            webDriver = new ChromeDriver(@"C:\Selenium\");
        }

        [TestMethod]
        public void TestMethod1()
        {
            myClass2.RandomMethod();
        }

第2课

[TestClass]
    public class Class2
    {
        static IWebDriver webDriver;
        public void invokeBrowser(TestContext context)
        {
            webDriver = new ChromeDriver(@"C:\Selenium\");
        }


        [TestMethod]
        public void RandomMethod()
        {
            webDriver.Navigate().GoToUrl("http://google.com");
        }
    }

Class1期间testmethod发生错误,我用来从其他班级拨打Randommethod

Message: Test method CheckRequest.UnitTest1.TestMethod1 threw exception: 
System.NullReferenceException: Object reference not set to an instance of an object.

我一直在努力解决这个错误,我只是不明白我做错了什么。我设置的唯一对象是我的webdriver。我正在创建两个不同的webdriver对象的问题?感谢您的时间,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

[TestClass]
    public class UnitTest1
    {
        Class2 myClass2 = new Class2();

        public static IWebDriver webDriver;

        [AssemblyInitialize]
        public static void invokeBrowser(TestContext context)
        {
            webDriver = new ChromeDriver(@"C:\Selenium\");
        }

        [TestMethod]
        public void TestMethod1()
        {
            myClass2.RandomMethod();
        }
}

//Class2
[TestClass]
    public class Class2
    {
        //[TestMethod]
        public void RandomMethod()
        {
            UnitTest1.webDriver.Navigate().GoToUrl("http://google.com");
        }
    }

[AssemblyInitialize]方法将在项目中的任何方法之前调用,因此wedDriver将具有值。 TestMethod1将调用RandomMethod(),如果你为RandomMethod保留[TestMethod],当你运行所有的TestMethods时,它将被执行两次,因为每个[TestMethod]都会被运行。这就是你需要的。