取代 URL 要求中的參數
當您使用 Web 應用程式編輯器擷取 Web 應用程式時,它可以在每次連線到應用程式時變更的一或多個要求中包含唯一資訊。 此資訊通常會包含在回應要求中,然後由一或多個後續要求使用。
例如,當使用者登入時,應用程式可能會建立唯一的會話標識符。 登入程序之後,每個要求都必須包含此會話標識碼。 如果沒有正確的會話標識碼,這些要求都會失敗。 由於在執行第一個要求之前,您不知道此值是什麼,所以它無法明確包含在要求的組態中。 如果您藉由錄製瀏覽器會話來建立 Web 應用程式,則會在每個要求的 URL 中收集會話識別碼。 不過,當應用程式執行時,要求會失敗,因為會話標識碼的值會與記錄的會話標識碼不同。
若要設定這類應用程式,您可以從一個要求的響應主體擷取內容參數,並在一或多個後續要求中使用該參數的值。 接著,您將後續要求中的明確值取代為代表 參數的變數。 每次執行綜合交易時,參數都會填入其定義所在的要求中。 在後續要求中使用 變數時,它會在要求傳送至應用程式之前,將它取代為所收集的值。
單一應用程式可以使用任意數目的內容參數。 任何數目的要求都可以使用單一參數,但必須在定義參數的要求之後執行。
會話標識碼範例
請考慮應用程式在使用者登入時建立會話標識碼的範例。 登入頁面之後,每個要求都需要此會話標識碼。 若要實作此案例,您必須在第一次產生會話標識符時擷取會話標識碼,然後在每個後續要求中使用該值。
您一開始會使用如何擷取 Web 應用程式錄製中所述的程式來擷取登入和後續動作。 登入應用程式的錄製會話,並執行某些動作看起來可能類似下列範例。
http://www.myapp.com/home.aspx
http://www.myapp.com/search.aspx?query=testing&sessionid=32793279321721
http://www.myapp.com/results.aspx?sessionid=32793279321721
http://www.myapp.com/submit.aspx?sessionid=32793279321721
在此要求順序中,會話標識碼是由第一個要求所建立,並用於第二、第三和第四個要求。 當您執行此監視器時,它會失敗,因為第一個要求會產生不符合擷取會話時所使用的會話標識碼的新會話標識碼。
若要使用參數取代來設定此要求順序,您必須在第一個要求上建立擷取規則,以建立會話標識碼的內容參數。 擷取規則會檢查要求的主體,以找出 sessionid 變數的值。 接著,您可以修改後續要求,以使用此參數,而不是會話標識碼的值。
修改的要求看起來類似下列範例。
http://www.myapp.com/home.aspx
http://www.myapp.com/search.aspx?query=testing&sessionid=$ParametersContext/sessionID$
http://www.myapp.com/results.aspx?sessionid=$ParametersContext/sessionID$
http://www.myapp.com/submit.aspx?sessionid=$ParametersContext/sessionID$
建立擷取規則
內容參數是由擷 取規則所收集,而每個擷取規則都會收集單一內容參數。 您會在 最初產生所需數據的要求的 [屬性 ] 對話框中建立擷取規則。 若要識別要擷取的值,您必須檢視從特定要求傳回的響應主體。 您可以檢視瀏覽器中傳回的頁面來源,或使用可讓您檢查 HTTP 回應詳細數據的工具。 您無法使用 Web 應用程式編輯器來檢視文字。
當您識別出包含必須擷取之資訊的要求時,您可以在該要求的屬性中檢視 [擷取規則 ] 索引卷標,並建立一或多個擷取規則。 下表顯示每個擷取規則的詳細數據。
選項 | 描述 |
---|---|
內容參數名稱 | 輸入要提供內容參數的名稱。 |
開始於 | 在響應主體中輸入可識別參數值開頭的文字。 您應該指定足夠的字元,以確保字串是唯一的。 參數的值會緊接在最後一個指定的字元之後開始。 |
結尾是 | 在響應主體中輸入可識別參數值結尾的文字。 參數的值會緊接在第一個指定的字元之前結束。 |
索引 | 如果 [ 開頭為] 方塊中的文字發生一次以上,這個值會指出要使用的值。 如果文字只出現一次,或第一次顯示要擷取的文字,則值應該是0。 如果應該擷取第二個值,則此值應該是1,依故。 |
搜尋相符文字時忽略大小寫 | 指定是否忽略以方塊開頭和結尾搜尋的字元大小寫。 |
執行擷取字串的 URI 編碼 | 指定是否要在收集擷取字串之後編碼。 |
將參數插入要求中
您可以使用要求中的參數,將明確值取代為代表 參數的變數。 變數的格式為 $ParametersContext/<ContextParameterName>$。 執行要求時,變數會取代為 參數所擷取的數據。
您可以使用下列兩種方法之一,將變數插入要求中:
- 在 [ 要求屬性] 對話框中,選取 [ 一般 ] 索引卷標,然後選取 [ 要求 URL ] 以修改要求的要求 URL。
- 在 [ 要求屬性] 對話框中,選取 [ 一般 ] 索引卷標,然後選取 [ 插入參數 ] 按鈕。 使用要求的 [ 插入參數 ] 對話框。 這是從要求的 [要求屬性] 對話方塊的 [一般] 索引卷標上的 [插入參數] 按鈕存取。
使用參數擷取的範例 Web 應用程式
下列程式提供在 Web 應用程式中使用參數擷取的範例。 本範例會針對 Bing 首頁的 [熱門現在] 區段中的第一個專案執行查詢。 由於此值會定期變更,因此您必須先連線到主頁面,並從響應主體收集搜尋字詞。 然後,您可以使用這個詞彙來建置要求來執行實際的搜尋。
主要 Bing 頁面如下所示 ,並醒目提示 [熱門立即 ] 區段。
若要判斷回應本文中搜尋字詞出現的位置,您可以檢視頁面的來源。 以下顯示來源的一部分,其中包含 [熱門現在] 區段的 HTML 程式 代碼。 在此 HTML 程式代碼中,您只需要搜尋字串,如下圖所示。 要求的格式為 , https://www.bing.com 後面接著這個字串。
您可以只提取詞彙本身,但將整個字串包含在 參數中更為簡單。 此字串前面加上 h3 熱門 now</h3><ul><li><a href=> 字元<,並以下一個出現的 “>結尾。 這些是您定義參數擷取時將使用的值。
記錄範例 Web 應用程式
- 使用如何擷取 Web 應用程式錄製中的程式來錄製 Web 應用程式。
- 錄製時,連接到 https://www.bing.com。
- 或者,使用瀏覽器上的 選項來檢視 Bing 首頁的來源,並找出 HTML 程式代碼的 [熱門現在 ] 區段。
- 選取 [立即熱門] 底下的第一個搜尋字詞。
- 將錄製儲存至 Web 應用程式。
- 拿掉最後一個要求,因為這是不需要的。 若要移除最後一個要求,請選取要求,然後在 [動作] 窗格中選取 [刪除]。 產生的要求看起來應該類似下列 URL:
建立擷取規則
選取第一個要求,然後在 [動作] 窗格中選取 [屬性]。
選取 [擷 取規則] 索引標籤 。
選取 [新增]。 [ 新增擷取規則 ] 對話框隨即開啟。
在 [新增擷取規則] 對話方塊的 [內容參數名稱] 方塊中,輸入 SearchString。
在 [ 開頭為] 方塊中,輸入 <h3>熱門 now</h3><ul><li><a href=>。
在 [ 結尾為] 方塊中,輸入 “。 擷取規則看起來應該類似下圖。
選取 [ 確定 ] 以儲存並關閉擷取規則。
選取 [ 確定 ] 以儲存並關閉要求。
將參數插入要求中
選取第二個要求,然後在 [動作] 窗格中選取 [屬性]。
在 [ 一般] 索引標籤上,選取 [ 插入參數]。
在 [字串] 方塊中,刪除 www.bing.com/ 之後的所有文字。
游標位於 URL 的結尾處,就在 www.bing.com 之後,選取 [參數] 方塊中的 SearchString,然後選取 [插入]。 這會插入變數 $ParametersContext/SearchString$。 最終要求看起來類似下圖。
選取確定關閉對話方塊。
選取 [ 確定 ] 以儲存並關閉要求。 修改的要求順序看起來應該類似下圖。
選取 [ 套用 ] 以套用變更,然後關閉 [Web 應用程式編輯器]。