2009-09-03 53 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>