Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium webdriver 声明硒';s WebDriver作为全局变量与SetUp()一起使用_Selenium Webdriver_C# 4.0_Nunit - Fatal编程技术网

Selenium webdriver 声明硒';s WebDriver作为全局变量与SetUp()一起使用

Selenium webdriver 声明硒';s WebDriver作为全局变量与SetUp()一起使用,selenium-webdriver,c#-4.0,nunit,Selenium Webdriver,C# 4.0,Nunit,我目前的设计如下: Web驱动程序是每个测试套件中每个设置的一部分(在本例中为Chrome) 为了能够在每个测试套件中使用全局变量,我创建了: class Globals { //drivers public static IWebDriver driverChrome = new ChromeDriver(); //ImplicitWait public static double ImplicitWaitGlobal = 20; } 因此,将my SetU

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

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

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

    //ImplicitWait
    public static double ImplicitWaitGlobal = 20;
}
因此,将my 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();
    }
}
有没有一种方法可以更“优雅”地超越驾驶员而不发生这种情况


谢谢

您想改用
OneTimeSetup
<每个测试方法运行一次代码>设置<代码>OneTimeSetup在运行任何测试之前运行一次。看一看

您想改用
OneTimeSetup
<每个测试方法运行一次代码>设置<代码>OneTimeSetup在运行任何测试之前运行一次。看看

mm..对我不起作用..我在类下有多个测试([Test]),在我更改[OneTimeSetup]后只有第一个通过..我在这里做错了什么吗..问题是,我运行的每个测试都需要[Setup]内容..因此(我猜)[OnTimeSetup]失败tests@entrup两者都可以使用。在
OneTimeSetup
中初始化Selenium,并在
Setup
中初始化每个测试内容,谢谢@Mike\u Two。我添加了完整的类来澄清问题。如果我将[SetUp]更改为[OneTimeSetUp],则只执行第一个测试。使用OneTimeSetUp初始化Selenium和使用SetUp初始化测试是什么意思?根据我在这里所拥有的,我可以使用其中一个,而不是两个..我错了吗?问题很可能是因为我正在从全局调用设置下的驱动程序值(如上所述),这会创建另一个我想消除的实例(浏览器窗口)。mm..对我不起作用..我有多个测试([测试])在类下,只有在我更改[OneTimeSetup]后第一个通过…我在这里做错了什么吗…问题是,我运行的每个测试都需要[Setup]内容…因此(我猜)[OnTimeSetup]失败了tests@entrup两者都可以使用。在
OneTimeSetup
中初始化Selenium,并在
Setup
中初始化每个测试内容,谢谢@Mike\u Two。我添加了完整的类来澄清问题。如果我将[SetUp]更改为[OneTimeSetUp],则只执行第一个测试。使用OneTimeSetUp初始化Selenium和使用SetUp初始化测试是什么意思?根据我这里的内容,我可以使用其中一个,而不是两个..我错了吗?问题很可能是因为我正在从全局调用设置下的驱动程序值(如上所述),这将创建另一个我希望消除的实例(浏览器窗口)。
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();
    }
}