2009-09-03 55 views
3

我不熟悉集成测试,但迄今为止使用Se:IDE构建了一套测试方面取得了巨大成功。正如我一直在运行我的测试,我发现我正在生成大量的数据,我想自己清理。使用Selenium IDE解析查询字符串值的URL

我的大部分测试都涉及到创建一个新的'页面',并且该查询字符串中的id可用。我希望Se:IDE存储查询字符串值,并将其传递给另一个页面,该页面在我运行验证后调用删除方法进行整理。

我看到我可以使用命令storeLocation,但我不知道该如何解析查询字符串中的id值,然后使用Open将其传递到另一个页面。

我是否已经达到了需要将测试迁移到c#的程度,或者可以使用IDE吗?

回答

5

如果您将所有测试用例保存在同一个测试套件中。他们可以在执行之间共享变量而不会出现问题 所以,你所要做的就是存储所需的值:

storeLocation | variable | | 

,并在以后的测试中,你必须使用变量如下所示:

open | ${variable} | | 

提示:了解更多信息在测试套件,一起来看看: http://seleniumhq.org/docs/03_selenium_ide.html#writing-a-test-suite

更新:

现在,您可以使用JavaScript正明确离子从一个变量获取子串:

storeEval | reg = /substring pattern/;reg.exec(${variable}) | substring 
open | ${substring} | | 

store | "012la4la" | a 
storeEval | re = /[0-3]*la/;re.exec(${a}) | new 
echo | ${new} | 

输出

[info] echo: 012la 
+0

虽然这是非常方便的就知道了,我还有解析存储在$ {}变量的查询字符串值的URL的问题。要么我需要一个可以返回查询字符串值的方法,或者使用正则表达式来分析$ {variable}的方法。 – 2009-09-03 22:16:44

+1

更新了文章,以防需要使用正则表达式解析 – Santi 2009-09-04 03:45:16

+0

Santi的正则表达式解决方案比我的优雅一些。干杯桑蒂。 – 2009-09-04 08:11:31

2

一个简单的例子,用于从查询字符串中提取id参数将是:

storeLocation | myLocation 
store | javascript{ storedVars['myLocation'].substring(storedVars['myLocation'].indexOf('id=')+3, storedVars['myLocation'].length); } | idValue 

这假定id参数是查询字符串中的最后一个。如果不是,那么您可能最好在'&'上分割位置,并循环访问'id'参数值的结果数组。

+0

我是否在Value文本框中运行javascript? – 2009-09-03 22:20:03

+0

嗯想通了,我需要使用storeEval运行JavaScript对存储的变量。 – 2009-09-03 22:45:45

3

我在工作中遇到了类似的问题,并且这个问题帮助我解决了很多问题。在我的情况下,我必须从aspx URL中去掉查询字符串参数,并验证它们的存在。

而我用一个2阶段的过滤方法进行验证 (1)storeLocation,storeEval和verifyExpression。 (2)verifyHTMLsource和通配符字符串

<tr> 
    <td>verifyLocation</td> 
    <td>http://qa.clockstock.com/confirmation.aspx?exrc=90210&amp;csrc=</td> 
    <td></td> 
</tr> 
<tr> 
    <td>storeLocation</td> 
    <td>urlconf</td> 
    <td></td> 
</tr> 
<tr> 
    <td>echo</td> 
    <td>${urlconf}</td> 
    <td></td> 
</tr> 
<tr> 
    <td>storeEval</td> 
    <td>storedVars['urlconf'].indexOf('exrc=90210');</td> 
    <td>exrcurlconf</td> 
</tr> 
<tr> 
    <td>verifyExpression</td> 
    <td>javascript{(storedVars['CIDurlconf']&gt;0)}</td> 
    <td>true</td> 
</tr> 
<tr> 
    <td>storeEval</td> 
    <td>storedVars['urlconf'].indexOf('csrc=');</td> 
    <td>CSRCurlconf</td> 
</tr> 
<tr> 
    <td>verifyExpression</td> 
    <td>javascript{(storedVars['CSRCurlconf']&gt;0)}</td> 
    <td>true</td> 
</tr> 
<tr> 
    <td>verifyHtmlSource</td> 
    <td>glob:*confirmation.aspx*exrc=90210*csrc=*</td> 
    <td></td> 
</tr>