Подтвердить что ты не робот

Как установить глобальный базовый URL-адрес для каждого тестового примера одного набора тестов в Selenium IDE?

Как установить глобальный базовый URL-адрес для каждого тестового примера одного набора тестов в Selenium IDE, чтобы я мог легко переключаться в другую среду?

4b9b3361

Ответ 1

Я только что создал отдельный тест и поставил его на вершину всех тестов. Храните базовый url в переменной, и теперь я могу получить к нему доступ в других тестовых случаях с помощью ${variable_name}.

Ответ 2

Если у вас много тестовых примеров в одном пакете, это боль, чтобы изменить базовый URL для каждого. Вместо этого создайте отдельный случай для каждого базового URL, с которым вам нужно переключаться между ними. Например, у меня есть store https://testing.site.com/ как myEnvironment, сохраненный как тестовый пример SetEnvTesting. Я создаю еще один случай для своего производственного сайта SetEnvProduction.

Затем вставьте тег ${myEnvironment} в начале каждого относительного URL-адреса в тестовых случаях. Например, open ${myEnvironment}/login.aspx. (Это может быть больно, если у вас уже много тестов. Я предлагаю только добавить его с этого момента.) Затем просто поставьте тестовый пример с установочной средой в начале тестового набора. Чтобы переключить весь пакет на другой базовый URL-адрес, просто поставьте другой пример среды установки в начале. Еще одна приятная вещь заключается в том, что вы можете переключаться между средами в середине набора, помещая другой срез среды установки в середине.

Изменить: пример использования тестового примера SetEnvironment.

Случай SetEnvironment: enter image description here

Пример следующего тестового примера. enter image description here

Примечание

  • как используется переменная CurrentEnvironment. Вы можете сделать это для каждого случая в пакете. Кроме того, вы можете сделать каждый отдельный набор тестов, используя тот же самый случай SetEnvironment, поэтому все они переключаются вместе.

  • что базовый Url становится неактуальным. Вы, по сути, отменяете это.

Я надеюсь, что это полезно!

Ответ 3

HTML файл тестового примера отвечает за настройку базового URL-адреса. Из Selenium IDE вы можете переопределить базовый URL для тестового примера. С другой стороны, набор тестов - это всего лишь мешок для ваших тестовых случаев.

Удалите базовый URL-адрес из каждого файла тестового примера, указанного в вашем тестовом наборе. Затем установите базовый URL вручную для набора тестов и запустите пакет.

Соответствующая строка находится в начале каждого файла тестового примера:

<link href="http://server-name/" rel="selenium.base"/>

Если он отсутствует, базовый URL переопределяет его автоматически.

Ответ 4

Мне было очень неприятно, что я не мог просто иметь пустой базовый URL-адрес и использовать его на той странице, которую я уже открыл, в качестве начала теста. Какой смысл записывать относительные URL-адреса, когда он заставляет вас hardcode базовый url, который имеет префикс для каждого относительного URL-адреса (тем самым превращая их в абсентные URL-адреса)?

Распространяясь на другие ответы и на этот вопрос: В Selenium IDE, как получить значение базового URL

Вы можете сохранить текущий домен в переменной, а затем использовать это вместо жестко закодированного. Это позволяет вам войти на сервер, на котором вы хотите запустить тесты, нажать на игру, и он будет запускать тесты без всякой этой бессмыслицы baseURL, перенаправляющей вас на неправильный сервер.

Просто используйте эти команды в начале первого script в вашем пакете: store current server

И продолжайте использовать синтаксис http://${host}/ для каждого действительно относительного URL-адреса, который вам нужен в script.

Ответ 5

Я пробовал принятый ответ, он работает для Selenium IDE, но он не работает при запуске автономного сервера .

Наконец, я поместил значение внутри user-extensions.js и воспользуюсь storeEval, чтобы вернуть значение. Тогда одно и то же значение можно было бы получить в разных случаях.

EDIT:

В user-extensions.js добавьте следующий

var selenium_base_url = "http://example.com"

В пакете HTLM добавьте следующие

<tr>
    <td>storeEval</td>
    <td>selenium_base_url</td>
    <td>case_base_url</td>
</tr>
<tr>
    <td>open</td>
    <td>${case_base_url}/case_path?a=1&b=2</td>
    <td></td>
</tr>

Это может показаться странным с первого взгляда, но на самом деле user-extension.js можно было изменить на лету прямо перед выполнением stand-alone server, поэтому вы можете поместить другой базовый url, используя script в реальном сценарии QA.

Ответ 6

Хм, я думаю, что есть более простое решение:

  • В первом тесте (набора тестов) настройте <link rel="selenium.base" href="http://google.com" /> по мере необходимости

  • В следующих тестах удалите (используя текстовый редактор или аналогичный): <link rel="selenium.base" ... />

Ответ 7

Если вы много раз щелкаете дважды,

  • Дважды щелкните верхний адрес, установите его на нужный URL.
  • Теперь дважды щелкните верхний, средний, нижний.
  • Теперь дважды щелкните нижний, средний, верхний.

Ответ 8

Я создал команду user-extension 'doBaseURL', которая управляет полем IDE Selenium 'Base URL'. В каждом тестовом примере тестового набора я добавил эту команду | baseURL | | |. Под поверхностью он устанавливает сохраненную переменную с именем baseURL. Можно предоставить сохраненную переменную "baseURL" значение из команды тестового случая до первой команды "baseURL". Этот метод перезаписывает параметр <link href="#" onclick="location.href='http://server-name/'; return false;" rel="selenium.base"/> для каждого файла тестового примера. Для меня это прекрасно работает, так как теперь Selenium IDE отражает базовый URL-адрес, который тестовый файл будет использовать (или использовался при возникновении ошибки).

java script:

Selenium.prototype.doBaseURL = function(strTarget, strValue) {
/**
  * Enables a more predictive Base URL when running a test suite with multiple test cases. 
  * On first usage it wil fill a stored variable 'baseURL' either with the given strTarget,
  * or when not given with the Base URL as shown on the Selenium IDE UI. The Selenium IDE UI field
  * Base URL is updated to reflect the (new) base URL. 
  * In each subsequent test case with a baseURL command the stored variable 'baseURL' will determine
  * the base.
  *
  * <p> Best to use as first command in each test case and only in the first test case a strTarget
  * argument, in that way the test cases of a test suite will no longer depend on their 'hidden'
  * '<link rel="selenium.base" href="#" onclick="location.href='http://www.something.com/'; return false;" />
  * construction, that makes test cases effectively having an absolute base URL.
  * </p>
  *
  * @param strTarget a Base URL value to be used in the test case (e.g. https://www.google.com/)
  */

// pushes the given strTarget into the selenium.browserbot.baseUrl
// and makes the new Base URL value visible on the Selenium IDE UI.
// A subsequent open command will use this new Base URL value

LOG.debug("begin: doBaseURL | " + strTarget + " | " + strValue + " |");

// note:    window.location.href = strTarget;      causes the browser to replace Selenium-IDE UI with the given url
// used that knowledge to manipulate the Selenium IDE UI as if a manual Base URL change was done.
LOG.debug("window.location.href= [" + window.location.href + "]");
LOG.debug("window.editor.app.getBaseURL() gives [" + window.editor.app.getBaseURL() + "]");

if (strTarget && (strTarget.substring(0,1)!="$")) { // only when strTaget has a value

strValue = "Base URL changed from [" + selenium.browserbot.baseUrl.toString() + "] into [" + strTarget + "]"; 
selenium.browserbot.baseUrl = strTarget.toString();

// set the visible Base URL value on the Selenium IDE UI to the new value
window.editor.app.setBaseURL(strTarget);
LOG.debug("updated into: " + window.editor.app.getBaseURL());

// remember this value for future calls
storedVars["baseURL"] = window.editor.app.getBaseURL();
LOG.debug("storedVars[\"baseURL\"] set to [" + window.editor.app.getBaseURL() + "]");

} else {
// no value =>  take storeVars["baseURL"] when set;
//      otherwise take Selenium IDE Base URL field.
if ((storedVars["baseURL"] != undefined) && (storedVars["baseURL"] != "")) {
    strValue = "Base URL changed from [" + selenium.browserbot.baseUrl.toString() + "] into [" + storedVars["baseURL"] + "]"; 
    selenium.browserbot.baseUrl = storedVars["baseURL"];

    // set the visible Base URL value on the Selenium IDE UI to the new value
    window.editor.app.setBaseURL(storedVars["baseURL"]);
    LOG.debug("updated from storedVars[\"baseURL\"]");
} else {
    strValue = "Base URL changed from [" + selenium.browserbot.baseUrl.toString() + "] into [" + window.editor.app.getBaseURL() + "]"; 
        selenium.browserbot.baseUrl = window.editor.app.getBaseURL();

    // remember this value for future calls
    storedVars["baseURL"] = window.editor.app.getBaseURL();
    LOG.debug("storedVars[\"baseURL\"] set to [" + window.editor.app.getBaseURL() + "]");
}
}
LOG.info(strValue);
LOG.debug("end: doBaseURL | " + strTarget + " | " + strValue + " |");
}

Установка расширения пользователя script объясняется в разделе "Использование расширений для пользователей с селеной средой". Документация SeleniumHQ: http://www.seleniumhq.org/docs/08_user_extensions.jsp