Selenium Grid и RemoteWebDriver

1

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

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

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

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

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

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

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

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

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

  • 0
    В идеале данные учетной записи должны быть частью теста. Селеновая сетка не должна иметь ничего общего с разными аккаунтами. Вы используете junit / testNG или какие-либо подобные фреймворки?
  • 0
    @A.JAJ - Нет, я в настоящее время не использую junit / testng или какой-либо фреймворк. Что вы имеете в виду, что данные учетной записи должны быть частью теста? Есть ли способ добавить его в тест, кроме как через порт? Я мог бы что-то упустить .. Спасибо
Теги:
selenium
selenium-webdriver
selenium-grid

2 ответа

1

Войдите в систему с каждым пользователем Windows и запустите узел selenium под каждой учетной записью на разных портах (например: 5555, 5556, 5557). Если каждый узел имеет одну и ту же настройку, я имею в виду тот же браузер, те же версии браузера и т.д.... вы можете использовать "applicationName", которое является поддерживаемой, но не документированной дополнительной возможностью. С помощью этой возможности вы можете отличить свои узлы. Например, в вашем 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);

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

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

0

Это невозможно с помощью Selenium Grid. Однако вы можете создать службу Windows, которая обертывает селеновую сетку.

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню