使用WebDriver、Nunit和c#测试多个浏览器的不同选项

本文关键字:浏览器 选项 测试 WebDriver Nunit 使用 | 更新日期: 2023-09-27 17:53:05

我正在尝试使用WebDriver, Nunit和c#在多个浏览器上运行测试。它正在工作,但我在Chrome中得到了令人讨厌的安全警告。为了修复它,我需要使用"。addarguments("——test-type")重新创建驱动程序;"。但我只想这样做,如果这个迭代浏览器= Chrome。这是我的代码。它可以工作,但它首先启动一个不需要的浏览器窗口。有人知道这是怎么回事吗?

   namespace SeleniumTests
   {
        [TestFixture(typeof(FirefoxDriver))]
        [TestFixture(typeof(InternetExplorerDriver))]
        [TestFixture(typeof(ChromeDriver))]
        public class TestWithMultipleBrowsers<TWebDriver> where TWebDriver : IWebDriver, new()
        {
             private IWebDriver driver;
             [SetUp]
             public void CreateDriver()
             {
                  this.driver = new TWebDriver();  //Creates a window that needs to be closed and re-constructed
                  if(driver is ChromeDriver)
                  {
                       driver.Quit();      //This kills the un-needed driver window created above
                       var chromeOptions = new ChromeOptions();
                       chromeOptions.AddArguments("--test-type"); 
                       driver = new ChromeDriver(chromeOptions);
                  }
             }

使用WebDriver、Nunit和c#测试多个浏览器的不同选项

为什么不干脆在基类中创建chromedriver呢?您也可以在那里使用chromoptions传递必要的参数。然后使用

[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
[TestFixture(typeof(ChromeDriver))]

这样可以避免不必要的代码重复和混乱。

我在这里有一个完整的驱动程序实例的实现

我认为你在你的代码调用chrome两次。下面是一个示例代码,可能会对您有所帮助。

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;

namespace MultipleBrowserTesting
{
[TestFixture(typeof(FirefoxDriver))]
[TestFixture(typeof(ChromeDriver))]
[TestFixture(typeof(InternetExplorerDriver))]
public class BlogTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
    private IWebDriver _driver;
    [Test]
    public void Can_Visit_Google()
    {
        _driver = new TWebDriver();
        // Navigate
        _driver.Manage().Window.Maximize();
        _driver.Navigate().GoToUrl("http://www.google.com/");
    }
    [TestFixtureTearDown]
    public void FixtureTearDown()
    {
        if (_driver != null) 
            _driver.Close();
    }
}
}

这里是Github项目的链接。解决方案链接