定位器对象的SearchContext不能为null(不使用静态驱动程序)

时间:2018-06-25 21:57:30

标签: c# selenium

我在pagefactory上遇到问题。当我使用静态驱动程序时,它没有问题,但是现在我想并行运行测试,这给我搜索上下文一个空错误。我已经看了一天,没有运气就挣扎了。

 public class MainDriver
{
    protected IWebDriver _driver { get; set; }

}


class InsurancePage: MainDriver
{

    public InsurancePage()
    {
        PageFactory.InitElements(_driver,this);
    }


    [FindsBy(How = How.Name, Using = "q")]
    [CacheLookup]
    public IWebElement signin;



    public void ClickOnSignInButton()
    {
        signin.Click();
        signin.SendKeys("Thank God");
    }


}




    public class AllDrivers: MainDriver
    {
        public enum Drivers
        { Chrome, firefox, edge, IE}

        public void GetRequiredDriver(Drivers mydriver)
        {
            switch(mydriver)
            {
                case Drivers.firefox:

                    _driver = new FirefoxDriver();
                    _driver.Manage().Window.Maximize();
                    _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                   // System.Threading.Thread.Sleep(100000);
                    _driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
                    break;

                case Drivers.edge:

                    _driver = new EdgeDriver();
                    _driver.Manage().Window.Maximize();
                    _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                    _driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
                    break;

                case Drivers.Chrome:

                    _driver = new ChromeDriver();
                    _driver.Manage().Window.Maximize();
                    _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                    _driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
                    break;

                case Drivers.IE:

                    _driver = new InternetExplorerDriver();
                    _driver.Manage().Window.Maximize();
                    _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                    _driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
                    break;

                default:
                    Console.WriteLine("Please select the right driver");
                    break;

            }
        }

        public void ShutDownDriver()
        {
            if (_driver !=null)
            {
                _driver.Close();
            }
        }
    }


 [TestFixture]
    [Parallelizable]
    public class FirefoxHooks: AllDrivers
    {
        [SetUp]
        public void OpenFirefoxdriver()
        {
            GetRequiredDriver(Drivers.firefox);
        }

        [TearDown]
        public void CloseFirefoxdriver()
        {
            ShutDownDriver();
        }
    }


    [TestFixture]
    [Parallelizable]
    public class ChromeHooks : AllDrivers
    {
        [SetUp]
        public void OpenChromedriver()
        {
            GetRequiredDriver(Drivers.Chrome);
        }

        [TearDown]
        public void CloseChromedriver()
        {
            ShutDownDriver();
        }
    }


    [TestFixture]
    [Parallelizable]
    public class EdgeHooks : AllDrivers
    {
        [SetUp]
        public void OpenEdgedriver()
        {
            GetRequiredDriver(Drivers.edge);
        }

        [TearDown]
        public void CloseEdgedriver()
        {
            ShutDownDriver();
        }
    }




    [TestFixture]
    public class AllTests:FirefoxHooks
    {
        public IWebDriver _driver;
        [Test]
        public void LoginTest()
        {
            InsurancePage insure = new InsurancePage();
            insure.ClickOnSignInButton();
        }
    }

    [TestFixture]
    public class AllTests2:ChromeHooks
    {
        [Test]
        public void NextTest()
        {
        }
    }

    [TestFixture]
    public class AllTests3:EdgeHooks
    {
        [Test]
        public void LogoutTest()
        {
        }
    }

0 个答案:

没有答案