如何为Selenium IDE中的一个测试套件的每个测试用例设置全局基本URL,以便我可以轻松切换到不同的环境?
答案 0 :(得分:33)
如果您在单个套件中有很多测试用例,那么更改每个套件的基本URL会很痛苦。而是为您需要切换的每个基本URL创建一个单独的大小写。例如,我将store https://testing.site.com/
myEnvironment
保存为测试用例SetEnvTesting。我为我的生产站点SetEnvProduction创建了另一个案例。
然后,在测试用例中的每个相对URL的开头插入${myEnvironment}
。例如,open ${myEnvironment}/login.aspx
。 (如果您已经进行了大量测试,这可能会很痛苦。我建议您从现在开始添加它。)然后,只需将set-environment测试用例放在测试套件的开头即可。要将整个套件切换到另一个基本URL,只需在开始时添加一个不同的set-environment案例。另一个好处是你可以通过在中间放置一个不同的set-environment案例来切换套件中间的环境。
编辑:使用SetEnvironment测试用例的示例。
SetEnvironment案例:
以下测试用例的示例。
注意
如何使用CurrentEnvironment变量。您可以为套件中的每个案例执行此操作。此外,您可以使每个单独的测试套件使用相同的SetEnvironment案例,因此它们都可以一起切换。
基本网址变得无关紧要。你本质上是在压倒它。
我希望这有用!
答案 1 :(得分:12)
测试用例HTML文件负责设置基本URL。在Selenium IDE中,您可以覆盖测试用例的基本URL。另一方面,测试套件只是测试用例的一个包。
从测试套件中引用的每个测试用例文件中删除基本URL设置。然后手动为测试套件设置基本URL并运行套件。
有问题的行位于每个测试用例文件的开头:
<link href="http://server-name/" rel="selenium.base"/>
如果缺少,则基本URL会自动覆盖它。
答案 2 :(得分:9)
我发现非常令人沮丧我不能只有一个空白的基本URL,并让它使用我已经打开的任何页面作为测试的开始。能够记录相对网址时,有什么意义强制您对基本网址进行硬编码,并将其作为每个相对网址的前缀(从而将其转换为absoulte网址)? ?
扩展其他答案和此问题:In Selenium IDE, how to get the value of the base url
您可以将当前域存储在变量中,然后使用该变量而不是硬编码变量。这使您可以登录到要运行测试的服务器,点击播放,它将运行测试而不会将所有这些baseURL废话重定向到错误的服务器。
只需在套件中第一个脚本的开头使用这些命令:
并继续对脚本中所需的每个真正相对网址使用http://${host}/
语法。
答案 3 :(得分:6)
我刚刚创建了一个单独的测试并将其放在所有测试的顶部。将基本URL存储到变量,现在我可以通过$ {variable_name}在其他测试用例中访问它。
答案 4 :(得分:1)
我尝试了接受的答案,它确实适用于selenium IDE,但在运行stand-alone server时无效。
最后,我将值放在user-extensions.js中,并使用storeEval来获取值。然后可以在不同的情况下检索相同的值。
编辑:
在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
执行之前动态修改,因此您可以在真实QA中使用脚本放置不同的基本URL场景。
答案 5 :(得分:0)
在第一次测试(测试套件)中进行调整
<link rel="selenium.base" href="http://google.com" />
根据需要
在以下测试中删除(使用文本编辑器或类似):
<link rel="selenium.base" ... />
答案 6 :(得分:0)
如果您可以多次双击,
答案 7 :(得分:0)
我创建了一个用户扩展命令'doBaseURL'来操纵Selenium IDE字段'Base URL'。
在测试套件的每个测试用例中,我添加了此命令| baseURL | | |
。在表面下方,它设置了一个名为baseURL的存储变量。
在第一个'baseURL'命令之前,可以从存储的变量'baseURL'中为测试用例命令提供一个值。
此方法将覆盖每个测试用例文件的<link href="http://server-name/" rel="selenium.base"/>
设置。
对我来说这很好,因为现在Selenium IDE反映了测试用例将使用的基本URL(或在发生错误时使用)。
java脚本是:
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="http://www.something.com/" />
* 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 + " |");
}
安装用户扩展脚本在“使用Selenium-IDE的用户扩展”部分SeleniumHQ文档中进行了说明:http://www.seleniumhq.org/docs/08_user_extensions.jsp