使用SetUp()将Selenium的WebDriver声明为全局变量

时间:2019-02-26 23:42:41

标签: selenium-webdriver c#-4.0 nunit

我当前的设计如下: Web驱动程序是每个测试套件(在本例中为Chrome)的每个设置的一部分

 public void SetUp()
    {
        driver = new ChromeDriver();
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
    }

为了能够在每个测试套件中使用全局变量,我创建了:

class Globals
{
    //drivers
    public static IWebDriver driverChrome = new ChromeDriver();

    //ImplicitWait
    public static double ImplicitWaitGlobal = 20;
}

因此将我的SetUp()更改为调用全局变量:

public void SetUp()
    {
        driver = Globals.driverChrome;
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
    }

以上所有方法都非常有效,但每次打开其他Chrome窗口 我进行测试(由于在Globals类下创建了一个新的Chrome驱动程序实例)。

该类如下:

public class Some_Tests
{
    private IWebDriver driver;
    private IWebElement element;

    [SetUp]
    public void SetUp()
    {
        driver = new Globals.driverChrome;
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
    }

    [Test]
    [Description("myTest1")]
    public void Test_1()
    {
        Navigate.LogIn_SideBar(Enviroment.Env, Users.user1, driver);
    }

    [Test]
    [Description("myTest2")]
    public void Test_2()
    {
        Navigate.LogIn_SideBar(Enviroment.Env, Users.user1, driver);
    }

    [TearDown]
    public void TearDown()
    {
        driver.Close();
        driver.Quit();
    }
}

有没有一种方法可以使驾驶员以更“优雅”的方式通过而不会发生这种情况?

谢谢。

1 个答案:

答案 0 :(得分:0)

您想改用OneTimeSetupSetup每个测试方法运行一次。 OneTimeSetup在运行任何测试之前运行一次。看看Setup And Teardown Docs