Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

JDI Framework С# подскажите где выбрать браузер и где прописывать параметры

csharp
jdi
jenkins
Теги: #<Tag:0x00007f7b70a59888> #<Tag:0x00007f7b70a59748> #<Tag:0x00007f7b70a59590>

(nik) #1

Подскажите как в JDI Framework на c# настроить выбор браузера. Для джавы нашел примеры, для C# мало информации. Конечная задача подать из Дженкинса флаг который запустит тесты с определенными настройками.
JDI подключен как пекедж через nuget


(Viktor Vladimirovich) #2

Задача не имеет никакого отношения к JDI, все решается на уровне NUnit test runner:

  1. При запуске тестов из командной строки параметр передается в таком виде:
nunit3-console.exe --params:Browser=Chrome [path_to_your_dll_with_tests]
  1. Доступ к параметрам из теста (то есть, из тестового контекста) возможен следующим способом:
var myBrowser = TestContext.Parameters.Get("Browser");

Соответственно, значение myBrowser будет равно “Chrome”.
При том в строку выше вы можете модифицировать таким образом, чтобы она возвращала вам и какое-то дефолтное значение по примеру Get(string name, T defaultValue):

var myBrowser = TestContext.Parameters.Get("Browser", "Firefox");

То есть, если параметр не передан вообще, то вы получите Мозиллу на выходе.

  1. Далее вам следует реализовать либо свою фабрику, которая возвращает вам нужный драйвер в зависимости от переданного значения параметра, либо взгляните на TestCaseSource Attribute. С его помощью вы можете обработать переданный параметр и передать уже нужный объект драйвера в тест.

P.S. Вопрос вдохновил меня на написание отдельной статьи с решением. Теперь только бы время выкроить :slight_smile:


(nik) #3

Возможно я не совсем корректно сформулировал вопрос, или Вы меня не совсем поняли.

В JDI Framework уже написана своя фабрика, которая возвращает нужный браузер. И в джаве он считывает параметры из файла test.properties в папке с тестами. Я не могу понять куда подложить параметры именно в C#.

За ваш ответ спасибо, думаю многим он будет полезен. Я, как альтернативу вашему подходу использую envinject plugin в jenkins, и читаю параметры из переменных среды
string browser = Environment.GetEnvironmentVariable(“browser”);


(Viktor Vladimirovich) #4

Ааа, тогда вам нужен app.config файл, который присутствует в каждом Windows приложении. Вот пример в самом JDI: https://github.com/epam/JDI/blob/master/C%23.Net/app.config

Обратите внимание на следующие строки:

<userSettings>
        <Epam.Properties.Settings>
            <setting name="driver" serializeAs="String">
                <value>chrome</value>
            </setting>
            <setting name="remote_url" serializeAs="String">
                <value>http://10.11.129.28:4444/wd/hub</value>
            </setting>
        </Epam.Properties.Settings>
        <JDI_UI_Framework.Properties.Settings>
            <setting name="driver" serializeAs="String">
                <value>ie</value>
            </setting>
        </JDI_UI_Framework.Properties.Settings>
    </userSettings>

На данный момент не могу сказать конкретно, как это состыковать с флагом из командной строки, надо покопаться, но это хорошая точка для старта