2015-04-12 3 views
1

У меня есть приложение, написанное на Java, которое создает учетную запись электронной почты на определенном веб-сайте. По некоторым причинам мне нужно запускать каждую итерацию программы под другой учетной записью пользователя Windows.Selenium Grid и RemoteWebDriver

Я использую Selenium Grid (RemoteWebDriver) для подключения к удаленному серверу (сетке) с сервера-концентратора.

Предполагая, что у меня есть несколько учетных записей пользователей Windows, установленных на удаленном сервере Windows (например, «account639», «account729», «account889» и т. Д.), И я хочу, чтобы мой концентратор подключался к каждой учетной записи отдельно и выполнял код Java

Мой вопрос: Как указать, какую учетную запись пользователя Windows должен выполнять код на сервере Grid?

Насколько я могу судить, двумя параметрами, которые я могу добавить в RemoteWebDriver, является имя хоста (или IP) удаленного сервера и порта. Я не вижу никакой опции указать, к какой учетной записи пользователя Windows она должна работать.

Поскольку имя хоста (IP) одинаково для всех учетных записей пользователей Windows под удаленным сервером, как я могу сказать, что «концентратор» каждый раз выполняет раздел кода под другой учетной записью пользователя Windows?

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

Например, я могу настроить селеновую сетку на «account639», чтобы прослушивать порт 6399, например, и «account729» для прослушивания на порту «7299», например - таким образом, я знаю, что код выполняется под соответствующими окнами Счет.

Возможно ли это? И есть ли более прямой способ сделать это, не используя порты (т. Е. Можно ли указать, какая учетная запись пользователя Windows должна подключаться к узлу так, как я указываю порты?)

+0

В идеале данные учетной записи должны быть частью теста. Селеновая сетка не должна иметь ничего общего с разными учетными записями. Используете ли вы junit/testNG или любые такие структуры? –

+0

@ A.J - Нет, в настоящее время я не использую junit/testng или любую фреймворк. Что вы имеете в виду, данные учетной записи должны быть частью теста? Есть ли способ добавить его к тесту, отличному от порта? Мне может быть что-то не хватает .. Спасибо –

ответ

0

Это не технически возможно с селеной сеткой , Однако вы можете создать службу Windows, которая обертывает селеновую сетку.

Как только вы установили службу Windows, вы можете выбрать, кому вы хотите, чтобы служба выполнялась как.

Вот статья о том, как запустить службу Windows в качестве учетной записи: https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sys_srv_logon_user.mspx?mfr=true

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

1

Войдите в систему с каждым пользователем Windows и запустите узел selenium под каждой учетной записью на разных портах (например: 5555, 5556, 5557). Если каждый узел имеет одну и ту же установку, я имею в виду тот же браузер, те же версии браузера и т. Д. ... вы можете использовать «имя приложения», которое является поддерживаемой, но не документированной дополнительной возможностью. С помощью этой возможности вы можете отличить свои узлы. Например, в вашем nodeConfig:

... 
{ 
    "applicationName":"account639", 
    "platform":"WINDOWS", 
    "browserName":"chrome", 
    "maxInstances":5, 
    "version":"40", 
    "seleniumProtocol":"WebDriver" 
}, 
... 

После этого вы можете настроить RemoteWebDriver для запуска тестов на конкретном узле, который принадлежит к определенной учетной записи пользователя вдовами.Например:

DesiredCapabilities dc = new DesiredCapabilities(); 
dc.setCapability("applicationName", "account639"); 
... 
WebDriver driver = new RemoteWebDriver(new URL(this.getHubUrl()), dc); 

Если вы хотите использовать более дополнительные возможности, вы можете создать свой собственный пользовательское Capability Искатель (найти его в Google: «Selenium Grid пользовательских возможностей Искатель»), но если вам нужно только один дополнительный Я рекомендую использовать упомянутый.

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

Смежные вопросы