Как установить глобальный базовый URL-адрес для каждого тестового примера одного набора тестов в Selenium IDE, чтобы я мог легко переключаться в другую среду?
Как установить глобальный базовый URL-адрес для каждого тестового примера одного набора тестов в Selenium IDE?
Ответ 1
Я только что создал отдельный тест и поставил его на вершину всех тестов. Храните базовый url в переменной, и теперь я могу получить к нему доступ в других тестовых случаях с помощью ${variable_name}.
Ответ 2
Если у вас много тестовых примеров в одном пакете, это боль, чтобы изменить базовый URL для каждого. Вместо этого создайте отдельный случай для каждого базового URL, с которым вам нужно переключаться между ними. Например, у меня есть store https://testing.site.com/
как myEnvironment
, сохраненный как тестовый пример SetEnvTesting. Я создаю еще один случай для своего производственного сайта SetEnvProduction.
Затем вставьте тег ${myEnvironment}
в начале каждого относительного URL-адреса в тестовых случаях. Например, open ${myEnvironment}/login.aspx
. (Это может быть больно, если у вас уже много тестов. Я предлагаю только добавить его с этого момента.) Затем просто поставьте тестовый пример с установочной средой в начале тестового набора. Чтобы переключить весь пакет на другой базовый URL-адрес, просто поставьте другой пример среды установки в начале. Еще одна приятная вещь заключается в том, что вы можете переключаться между средами в середине набора, помещая другой срез среды установки в середине.
Изменить: пример использования тестового примера SetEnvironment.
Случай SetEnvironment:
Пример следующего тестового примера.
Примечание
-
как используется переменная 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 в вашем пакете:
И продолжайте использовать синтаксис 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