Как запустить тестовые сценарии с кросс-браузерами с помощью Selenium C# Mstest - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу запустить

  • Конкретный тестовый случай с определенным браузером
  • Тестовые случаи с несколькими браузерами

    Мой код:

     public class Test
                {
                   private IWebDriver WDriver;
                    [TestInitialize]
                    public void initilize()
                    {
    
                        WDriver = UniverslM.selectdriver(Chrome);
                     }
                    [TestMethod]
                    public void TestMethod1()
                    {
                       sometestcase
                    }
                    [TestMethod]
                    public void TestMethod2()
                    {
                        sometestcase1
                    }
                }
    

Код в UniverslM.cs:

        static public IWebDriver selectdriver(brt)
        {
            IWebDriver driver;
                        switch (brt)
                        {
                            case Chrome:
                                ChromeOptions cOption = new ChromeOptions();
                                driver = new ChromeDriver(cOption);
                                driver.Navigate().GoToUrl(URL);
                                return driver;
                            case FireFox:
                                FirefoxOptions fOption = new FirefoxOptions();
                                driver = new FirefoxDriver(fOption);
                                driver.Navigate().GoToUrl(URL);
                                bool ele1 = AutoItX.WinExists("[CLASS:MozillaDialogClass]") == 1;

                        if (ele1)
                        {
                            AutoItX.WinActivate("[CLASS:MozillaDialogClass]");
                            AutoItX.Send("someusername");
                            AutoItX.Send("somepassword");
                        }
                        return driver;
    }
}
  1. Я хочу запустить эти два тестовых случая с несколькими браузерами, которые должны включать chrome и firefox.
  2. TestMethod1 с Chrome и TestMethod2 с firefox одновременно таким образом, что оба браузера инициализируются в одно и то же время, а тестовые случаи запускаются одновременно

Я использую Mstest selenium webdriver и C#.

1 Ответ

0 голосов
/ 24 апреля 2020

Я бы сделал следующее:

  1. Создайте класс BaseTest для организации и абстрагирования ваших тестовых случаев. Здесь мы также создадим свойство TestContext, чтобы использовать коллекцию Properties, чтобы получить TestProperty, которым мы украсим TestMethod, и таким образом инициализировать ваш драйвер с указанным браузером:

    public class BaseTest
      {
        private string _url = "Your AUT URL...";
        public TestContext TestContext { get; set; }
    
        [TestInitialize]
        public void SetUp()
        {
           var testPropertyValues = TestContext.Properties;
           var testBrowser = testPropertyValues["Browser"];
           DriverFactory.SetBrowserDriver(testBrowser);
           DriverFactory.Driver.Navigate().GoToUrl(_url);
       }
    
       [TestCleanup]
       public void TearDown()
       {
           DriverFactory.Driver.Quit();
       }
     }
    
  2. Создайте класс c DriverFactory, чтобы ваш объект WebDriver создавался и инициализировался там, а затем вам нужно было бы только вызвать метод DriverFactory.SetBrowserDriver () в TestInitialize:

    public static class DriverFactory
      {
        public static IWebDriver Driver { get; set; }
    
        public static void SetBrowserDriver(string browserName)
        {
          switch (browserName.ToUpper())
           {
            case "FIREFOX":
                new WebDriverManager.DriverManager().SetUpDriver(new FirefoxConfig());
                Driver = new FirefoxDriver();
                break;
    
            case "CHROME":
                Driver = new ChromeDriver();
                break;
           }
    
         Driver.Manage().Window.Maximize();
       }
     }
    
  3. Для параллельного запуска тестов используйте атрибут [Parallelize] в сборке:

    [assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
    namespace TestCases
     public class Test : BaseTest
        {
            [TestMethod]
            [TestProperty("Browser", "Chrome")]
            public void TestMethod1()
            {
               //-- Test Logic
            }
            [TestMethod]
            [TestProperty("Browser", "Firefox")]
            public void TestMethod2()
            {
                //-- Test Logic
            }
        }
    

Я надеюсь, что этот ответ, если не решение, поможет найти правильный путь (:

Предостережение: я новичок в этом, поэтому будьте добры: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...