Selenium webdriver 声明硒';s WebDriver作为全局变量与SetUp()一起使用
我目前的设计如下: Web驱动程序是每个测试套件中每个设置的一部分(在本例中为Chrome) 为了能够在每个测试套件中使用全局变量,我创建了: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
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();
}
}