2015-10-20 122 views
1

我想在三个浏览器上执行测试,并且我希望有条件地执行此测试。有条件地执行不同浏览器上的自动化测试

示例 - 如果浏览器名称为chrome,请转至Google.com并搜索硒测试。如果浏览器名称是Firefox,则搜索MongoDB。 这只是一个示例代码解决方案,但我需要在我的项目中实现这个概念。

我使用Nunit的TestFixture属性在多个浏览器上执行测试,我想继续使用NUnit。

这是我正在使用的代码示例。

注意:由于Test Fixture属性中的搜索参数,您可能无法在Test Explorer中看到测试。

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


namespace MultipleBrowserTesting 
{ 
    [TestFixture(typeof(FirefoxDriver), "MongoDB")] 
    [TestFixture(typeof(ChromeDriver), "Selenium Testing")] 
    [TestFixture(typeof(InternetExplorerDriver), "ElasticSearch")] 

    public class BlogTest<TWebDriver> where TWebDriver : IWebDriver, new() 
    { 
     private IWebDriver _driver; 

    [Test] 
    public void Can_Visit_Google(string searchString) 
    { 
     _driver = new TWebDriver(); 

     // Navigate 
     _driver.Manage().Window.Maximize(); 

     _driver.Navigate().GoToUrl("http://www.google.ie/"); 
     _driver.FindElement(By.Id("lst-ib")).SendKeys("searchString"); 
     _driver.FindElement(By.Name("btnK")).Click(); 

     FixtureTearDown(); 
    } 

    [TestFixtureTearDown] 
    public void FixtureTearDown() 
    { 
     // if (_driver != null) 
     _driver.Close(); 
    } 
} 
} 

我想我以错误的方式传递参数。我已经提到这个链接。

TestFixtureAttribute

+0

请务必接受答案,以便将问题标记为已回答。你现在不需要这样做......你可以等,只是请不要忘记在一两天内回来。 :) – JeffC

+0

感谢您的信息@JeffC。会这样做。干杯! – Vish

回答

0

我设法找到一个答案,以我自己的问题。这是示例代码。如果您有更好的解决方案,请发布。谢谢!

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


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(); 
     ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities; 
     string browser = capabilities.BrowserName; 
     _driver.Manage().Window.Maximize(); 
     _driver.Navigate().GoToUrl("http://www.google.ie/"); 

     if (browser == "internet explorer") 
     { 
      _driver.FindElement(By.Id("lst-ib")).SendKeys("MongoDB"); 
     } 
     else if (browser == "chrome") 
     { 
      _driver.FindElement(By.Id("lst-ib")).SendKeys("ElasticSearch"); 
     } 
     else 
     { 
      _driver.FindElement(By.Id("lst-ib")).SendKeys("Selenium"); 
     } 
     _driver.FindElement(By.Name("btnG")).Click(); 
     FixtureTearDown(); 
    } 

    [TestFixtureTearDown] 
    public void FixtureTearDown() 
    { 
     _driver.Close(); 
    } 
} 
} 
+0

如果有的话,一些技术人员可能会争论使用否则这里是使用开关的另一个示例。 – Vish

0

一些技术人员可能会争论,如果其他人的使用,如果所以这里是使用交换机的另一个解决方案。

public void Can_Visit_Google() 
    { 
     _driver = new TWebDriver(); 
     ICapabilities capabilities = ((RemoteWebDriver)_driver).Capabilities; 
     string browser = capabilities.BrowserName; 
     _driver.Manage().Window.Maximize(); 
     _driver.Navigate().GoToUrl("http://www.google.ie/"); 

     switch (browser) 
     { 
      case ("internet explorer"): 
       _driver.FindElement(By.Id("lst-ib")).SendKeys("ElasticSearch"); 
       break; 

      case ("chrome"): 
       _driver.FindElement(By.Id("lst-ib")).SendKeys("MongoDB"); 
       break; 

      case ("firefox"): 
       _driver.FindElement(By.Id("lst-ib")).SendKeys("Selenium"); 
       break; 
     } 
       _driver.FindElement(By.Name("btnG")).Click(); 
       FixtureTearDown(); 
    }