2gis / Winium.Desktop

Winium.Desktop is Selenium Remote WebDriver implementation for automated testing of Windows application based on WinFroms and WPF platforms.
Mozilla Public License 2.0
402 stars 140 forks source link

Параллельное выполнение/Parallel execution #263

Open arabclock opened 6 years ago

arabclock commented 6 years ago

Хочу запустить параллельное выполнение например калькулятора. Использовал WiniumDriver+ NUnit. В качестве атрибута я использовал [Parallelizable(ParallelScope.All)]. Калькулятор запускается в 2 окна, но падает когда нужно кликнуть на кнопку. Как правильно запустить параллельное выполнение и можно ли это вообще сделать? Основная задача нагрузить desktop приложение./ I want to run parallel execution for example a calculator. I used WiniumDriver + NUnit. As an attribute, I used [Parallelizable (ParallelScope.All)]. The calculator starts in 2 windows, but falls when you need to click on the button. How to run parallel execution correctly and can this be done at all? The main task is to load the desktop application.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Remote;
using Winium.Cruciatus.Core;
using System;
using System.IO;
using OpenQA.Selenium.Winium;
using System.Windows.Automation;
using NUnit.Framework;
namespace NUnit.Test1
{
    [TestFixture]
    [Parallelizable(ParallelScope.All)]
    public class UnitTest1
    {
        [SetUp]
        public void setup()
        {
            DesktopOptions option = new DesktopOptions();
            option.ApplicationPath = @"C:/Windows/System32/calc.exe";
            WiniumDriver driver = new WiniumDriver(@"C:/Users/***/Downloads/Winium.Desktop.Driver", option);
        }
        //public RemoteWebDriver Driver { get; set; }
        [Test]
        public void Test1()
        {
            //DesktopOptions option = new DesktopOptions();
            //option.ApplicationPath = @"C:/Windows/System32/calc.exe";
            //WiniumDriver driver = new WiniumDriver(@"C:/Users/sosnin_ds/Downloads/Winium.Desktop.Driver", option);
            var winFinder = By.Name("Калькулятор").AndType(ControlType.Window);
            Winium.Cruciatus.Elements.CruciatusElement win = null;
            win = Winium.Cruciatus.CruciatusFactory.Root.FindElement(winFinder);
            win.FindElementByUid("131").Click();
            //driver.Quit();
        }
        [Test]
        public void Test2()
        {
            //DesktopOptions option = new DesktopOptions();
            //option.ApplicationPath = @"C:/Windows/System32/calc.exe";
            //WiniumDriver driver = new WiniumDriver(@"C:/Users/sosnin_ds/Downloads/Winium.Desktop.Driver", option);
            var winFinder = By.Name("Калькулятор").AndType(ControlType.Window);
            Winium.Cruciatus.Elements.CruciatusElement win = null;
            win = Winium.Cruciatus.CruciatusFactory.Root.FindElement(winFinder);
            win.FindElementByUid("139").Click();
            //driver.Quit();
        }
    }
}
heilwood commented 6 years ago

на одной машине ты не сможешь запустить параллельно два теста, среда должна быть изолирована, у тебя же только одна мышка. Создай несколько виртуальных машин, добавь функциональность в сам winium чтобы он поддерживал hub и node для параллельного запуска, можешь написать на почту мне, я тебе пришлю готовую версию. На одной из виртуальных машин будет висеть хаб и нода, а на остальных только нода, таким образом ты сможешь запускать параллельно.

arabclock commented 5 years ago

на одной машине ты не сможешь запустить параллельно два теста, среда должна быть изолирована, у тебя же только одна мышка. Создай несколько виртуальных машин, добавь функциональность в сам winium чтобы он поддерживал hub и node для параллельного запуска, можешь написать на почту мне, я тебе пришлю готовую версию. На одной из виртуальных машин будет висеть хаб и нода, а на остальных только нода, таким образом ты сможешь запускать параллельно.

@heilwood Привет! Спасибо за информацию тоже попытались сделать через Selenium Grid но не получилось. Как тебе написать на email, в профиле не нашёл.

heilwood commented 5 years ago

Если будут вопросы какие-то пиши на heilwood@inbox.lv. Сам виниум и будет выступать в роли хаба и ноды, только с разными конфигами.

arabclock commented 5 years ago

@arabclock http://www.mediafire.com/file/7ikkxqvgilkr6jk/Winium.Desktop.Driver.exe.7z/file от сюда можешь скачать мою версию, а если будут вопросы какие-то пиши на heilwood@inbox.lv. Как скачаешь, дай знать, я удалю линк. Сам виниум и будет выступать в роли хаба и ноды, только с разными конфигами.

А почему ты кидаешь .exe файл? Зачем мне winium драйвер? Ты скидывай код или .cs файлы.

heilwood commented 5 years ago

@arabclock потому что код, это частная собственность компании, я тратил свои человеко часы в рабочее время, чтобы его усовершенствовать, там переписано пол драйвера, усовершенствован перфоманс, добавлен драг энд дроп, поддержка click-once аппликаций, больше паттернов супортит, selenium Keys и т.д. Ссылку потер, пробуй сам делать, пример кода есть в версии для мобильных устройств.