2015-02-18 3 views
2

Я хотел был бы иметь возможность запускать мои модульные тесты в разных браузерах (FF/IE/Chrome) без необходимости изменять код, чтобы изменить используемый webdriver. Я новичок в тестировании селена и буду благодарен за любые рекомендации.Тестирование Cross-Browser с помощью Selenium WebDriver с использованием C#

Я хотел бы быть в состоянии сделать следующее:

  1. запустить определенный тест против конкретного браузера
  2. запустить все тесты в отношении конкретного браузера
  3. запустить все тесты на все браузеры

Вот некоторые варианты, которые я рассмотрел, но они не соответствуют моим всем моим потребностям.

  1. Попросите пользователя (через диалоговое окно), какой браузер запустить тест против
    • Этот подход соответствует условию # 1, перечисленных выше, но не 2 и 3.
    • Такой подход вызывает у пользователя для запроса на каждый тест, чтобы он не соответствовал условиям № 2
  2. Храните браузер по умолчанию в файле конфигурации.
    • Конфигурационный файл может быть легко отредактирован с помощью текстового редактора
    • Этот подход соответствует условию # 1 и # 2, но требует ручного редактирования файл конфигурации перед запуском тестов.
+0

Вы используете 'NUnit'? – Saifur

+0

Нет, но я могу изучить его, если это лучшая альтернатива. В настоящее время я использую Visual Studio Unit Testing для запуска своих тестов. –

+1

См. [This] (http://stackoverflow.com/questions/4822568/how-do-i-test-multiple-browsers-with-selenium-and-a-single-nunit-suite-and-keep). Тем не менее, это способ последовательного выполнения не параллельно и не соответствует вашему требованию – Saifur

ответ

0

Если вы используете Visual Studio, вы можете использовать заказанные тесты. Что я сделал, я создал три отдельных тестовых примера: SetIE, SetChrome и SetFireFox.

[TestMethod] 
    public void SetIE() 
    { 
     Browser.Type = "IE"; 

    } 


    [TestMethod] 
    public void SetFireFox() 
    { 
     Browser.Type = "FF"; 

    } 


    [TestMethod] 
    public void SetChrome() 
    { 

     Browser.Type = "CR"; 
    } 

Эти методы просто устанавливают строку в переменной класса и ничего не делают. Создайте метод для инициализации WebDriver

IWebDriver WebDriver = null; 

public static void InitializeDriver(TestContext t) 
    { 
     if (WebDriver == null) 
      { 

       string DRIVER_PATH = @"C:\automation\driversFolder\"; 

       switch (Browser.Type) 
       { 
        case "IE": 

         WebDriver = new InternetExplorerDriver(DRIVER_PATH);       

         break; 

        case "FF": 

         WebDriver = new FirefoxDriver(); 
         break; 


        case "CR": 

         WebDriver = new ChromeDriver(DRIVER_PATH); 
         break; 

        default: 
         WebDriver = new FirefoxDriver();       
         break; 

       } 

      } 

    } 

Смотрите эту запись в блоге, который более или менее описывает this решения.

Теперь вам нужно создать упорядоченный тест для IE. Поместите там первый тестовый файл SetIE. и ниже, вставьте другой тестовый пример, например, логин и т. д. Теперь у вас есть один пакет, готовый выполнить ваши тестовые примеры в IE. Similary создайте упорядоченные тесты для Chrome и FireFox. После этого создайте четвертый упорядоченный тестер под названием «Все браузеры». Вставьте в него все 3 заказанных теста.

После этого вот что вы можете сделать сейчас. A) Если вы хотите запустить один тестовый пример против определенного браузера, просто измените имя браузера в своем классе и запустите этот тестовый пример.

B) если вы хотите запустить все тесты с определенным браузером, просто выполните заказный тест этого конкретного броузера.

C) Если вы хотите запустить все тесты во всех браузерах, запустите свой четвертый заказный тест.

Надеюсь, это поможет.

1

Вот одно из простых решений для вашей проблемы. Вы можете использовать NUnit для выполнения тестов селена в нескольких браузерах. Все, что вам нужно сделать, это загрузить Nunit из NuGet и указать его в своем проекте. Вот пример кода, который работает отлично.

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(); 
    } 
} 
} 
Смежные вопросы