Как я могу идентифицировать хост селена сетки, работающий на моем тесте изнутри теста?

StackOverflow https://stackoverflow.com/questions/1393889

Вопрос

Я использую селенс сетку с Testng, чтобы запустить свои тесты параллельно. У меня есть определенные тесты, которые требуют, чтобы пользователь был вошел в систему, поэтому у меня есть учетная запись пользователя, настроенная для тестирования.

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

  • Настройте нового пользователя для каждого теста (я понимаю, что это может быть идеальным решением, но для настройки/запуска потребуется некоторое время.

  • Иметь несколько тестовых учетных записей пользователей и убедитесь, что только один используется за раз.

Если бы я мог идентифицировать хост машины, запускающего тест, я мог бы настроить тестовые учетные записи соответственно. Есть ли способ сделать это, или есть еще одно решение, о котором я не думал?

Это было полезно?

Решение 2

Я решил свою проблему, настроив несколько уникальных учетных записей пользователей исключительно для тестирования, и все это заканчивалось номером (например: selenium.test1). Это было просто автоматизировать в качестве единой задачи с использованием селена.

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

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

Другие советы

Я решил проблему определения удаленного управления, установив «кто я есть». На моей фабрике удаленного Webdriver (или Selenium) я посещаю эту страницу, храню ее в этом классе, который я использую для хранения сеанса, и регистрировать ее. На этой странице сообщает имя хоста, IP, тип браузера и версию.

Еще одно решение, предлагаемое здесь:

https://groups.google.com/forum/#!topic/selenium-users/8enrw9jnayq

 public static String[] getHostNameAndPort(String hostName, int port, SessionId session) {
        String[] hostAndPort = new String[2];
        String errorMsg = "Failed to acquire remote webdriver node and port info. Root cause: ";

        try {
            HttpHost host = new HttpHost(hostName, port);
            DefaultHttpClient client = new DefaultHttpClient();
            URL sessionURL = new URL("http://" + hostName + ":" + port + "/grid/api/testsession?session=" + session);
            BasicHttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST",
                    sessionURL.toExternalForm());
            HttpResponse response = client.execute(host, r);
            JSONObject object = extractObject(response);
            URL myURL = new URL(object.getString("proxyId"));
            if ((myURL.getHost() != null) && (myURL.getPort() != -1)) {
                hostAndPort[0] = myURL.getHost();
                hostAndPort[1] = Integer.toString(myURL.getPort());
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, errorMsg, e);
            throw new RuntimeException(errorMsg, e);            
        }
        return hostAndPort;
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top