【问题标题】:Testing multiple browsers with different options using WebDriver, Nunit and C#?使用 WebDriver、Nunit 和 C# 测试具有不同选项的多个浏览器?
【发布时间】:2015-10-15 23:51:09
【问题描述】:

我正在尝试使用 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);
                  }
             }

【问题讨论】:

  • 您立即遇到了代码结构问题。您同时具有通用性和特定性。选一个!

标签: c# selenium webdriver nunit


【解决方案1】:

你为什么不简单地在基类中创建好chromedriver呢?您还可以在那里使用chromoptions 传递必要的参数。然后使用

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

这也将避免您不必要的代码重复和混乱。

我有完整的驱动实例实现here

【讨论】:

    【解决方案2】:

    我认为您在代码中调用了 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 项目的链接。 GitHub Link to solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      相关资源
      最近更新 更多