2015-10-20 45 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(); 
    } 
相關問題