Как работать с 2 FireFoxDrivers одновременно?Selenium поддерживает многопоточность? - PullRequest
5 голосов
/ 16 марта 2012

Как работать с 2 FireFoxDrivers одновременно? Selenium поддерживает многопоточность?

У меня есть тест ниже, который открывает 2 браузера Firefox, но обе навигации происходят только в первом экземпляре браузера!

  [Test]
    public void TestMultithreading()
    {
        var tasks = new List<Task>
                        {
                            new Task(goToBbc),
                            new Task(goToGoogle)
                        };

        tasks.ForEach(task => task.Start());

        Task.WaitAll(tasks.ToArray());
    }

    private void goToBbc()
    {
        openBrowserAndGoTo("http://www.bbc.com");
    }

    private void goToGoogle()
    {
        openBrowserAndGoTo("http://www.google.com");
    }

    private void openBrowserAndGoTo(string url)
    {
        var webDriver = new FirefoxDriver();
        webDriver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 1, 0));
        webDriver.Navigate().GoToUrl(url);
        Thread.Sleep(5000);
        webDriver.Quit();
    }

Надеюсь, вопрос ясен.

Спасибо

Ответы [ 5 ]

5 голосов
/ 16 марта 2012

Selenium RC / WebDriver предназначен для автоматизации браузера.Если вы хотите запускать несколько тестов параллельно, вам следует посмотреть на выполнение ваших скриптов через Selenium Grid / RemoteDriver.

1 голос
/ 03 апреля 2012

TestNG - очень хороший вариант для параллельного запуска тестов. Мы используем его для автоматизации нашей продукции.

1 голос
/ 16 марта 2012

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

Возможно, вам также нужен тестовый прогон, поддерживающий распараллеливание: TestNG для Java, MBunit для .NET.

Тем не менее, поддержка нескольких экземпляров веб-драйверов различается в разных браузерах:

  • Chrome отлично работает с несколькими экземплярами Chrome, работающими локально.
  • Иногда Firefox работал, в зависимости отверсия webdriver и FF
  • IE не может управлять несколькими экземплярами локально.

Мы используем запуск сетки (около 20 пультов) для поддержки параллельного выполнения во всех браузерах.

0 голосов
/ 18 ноября 2017

Поскольку другие еще не упомянули об этом, я дам привет Maven и его плагинам для селена в Java.

Плагины Maven Surefire и Failsafe управляют жизненным циклом тестирования сборки (или комплекта)в этом случае).Я использовал эти плагины с JUnit для запуска многопоточных тестов селена.Я уверен, что TestNG так же способен.

С этим типом проекта вы можете запустить mvn test или mvn verify из командной строки, чтобы запустить тесты и сообщить о результатах.Если ваша IDE поддерживает сборки maven, вы можете щелкнуть правой кнопкой мыши на вашем тестовом пакете и выполнить тесты оттуда.

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

Я также должен отметить, что вы захотите сосредоточиться на написании атомарных тестов, где они могут выполняться индивидуально, а затем позволить системе сборки выполнить ихвсе как люкс.

0 голосов
/ 10 декабря 2015

Пожалуйста, попробуйте многопроцессорную обработку в Selenium, а затем управляйте процессом другими способами с помощью параметров программы.

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