替换 URL 请求中的参数
使用 Web 应用程序编辑器捕获 Web 应用程序时,它可以在每次连接到应用程序时更改的一个或多个请求中包含唯一信息。 此信息通常包含在对请求的响应中,然后由一个或多个后续请求使用。
例如,当用户登录时,应用程序可能会创建唯一的会话 ID。 登录过程后,此会话 ID 必须包含在每个请求中。 如果没有正确的会话 ID,则其中每个请求都会失败。 由于在运行第一个请求之前不知道此值是什么,因此不能在请求的配置中显式包含该值。 如果通过录制浏览器会话创建 Web 应用程序,则会在每个请求的 URL 中收集会话 ID。 但是,当应用程序运行时,请求会失败,因为会话 ID 将具有与记录的会话 ID 不同的值。
若要配置此类应用程序,可以从一个请求的响应正文中提取上下文参数,并在一个或多个后续请求中使用该参数的值。 然后,将后续请求中的显式值替换为一个代表参数的变量。 每次运行综合事务时,参数都会在定义该事务的请求中填充。 在后续请求中使用变量时,该变量将替换为收集的值,然后再将请求发送到应用程序。
单个应用程序可以使用任意数量的上下文参数。 任意数量的请求都可以使用单个参数,但必须在定义参数的请求之后运行。
会话 ID 示例
请考虑应用程序在用户登录时创建会话 ID 的示例。 登录页后,每个请求都需要此会话 ID。 若要实现此方案,必须在首次生成会话 ID 时捕获会话 ID,然后在每个后续请求中使用该值。
首先使用“如何捕获 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
在此请求序列中,会话 ID 由第一个请求创建,并在第二个、第三个和第四个请求中使用。 运行此监视器时,它会失败,因为第一个请求会生成一个新的会话 ID,该 ID 与捕获会话时使用的会话 ID 不匹配。
若要使用参数替换配置此请求序列,必须在第一个请求上创建提取规则,以便为会话 ID 创建上下文参数。 提取规则检查请求正文以查找 sessionid 变量的值。 然后,修改后续请求以使用此参数,而不是会话 ID 的值。
修改的请求类似于以下示例。
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 应用程序编辑器查看文本。
确定包含必须提取的信息的请求后,可以在该请求的属性中查看 “提取规则 ”选项卡,并创建一个或多个提取规则。 下表显示了每个提取规则的详细信息。
选项 | 说明 |
---|---|
上下文参数名称 | 输入名称以提供上下文参数。 |
开头为 | 在标识参数值的开头的响应正文中输入文本。 应指定足够的字符以确保字符串是唯一的。 参数的值紧接在最后一个指定字符之后开始。 |
结尾为 | 在标识参数值的末尾的响应正文中输入文本。 参数的值紧接在第一个指定字符之前结束。 |
Index | 如果“起始为”框中的文本出现多次,此值指示要使用的值。 如果文本只出现一次,或者第一次显示要提取的文本,则该值应为 0。 如果应提取第二个值,则该值应为 1,依此表示。 |
在搜索匹配文本期间忽略大小写 | 指定是否忽略使用“起始为”和“结尾为”框搜索的字符的大小写。 |
执行提取字符串的 URI 编码 | 指定是否在收集提取的字符串后对其进行编码。 |
将参数插入请求
通过在请求中使用参数,将显式值替换为表示参数的变量。 变量的格式为 $ParametersContext/<ContextParameterName>$。 运行请求时,变量将替换为参数提取的数据。
可以使用以下两种方法之一将变量插入请求:
- 在 “请求属性 ”对话框中,选择“ 常规 ”选项卡,然后选择“ 请求 URL ”以修改请求的请求 URL。
- 在 “请求属性 ”对话框中,选择“ 常规 ”选项卡,然后选择“ 插入参数 ”按钮。 对请求使用“插入参数”对话框。 这是从请求的“请求属性”对话框中的“常规”选项卡上的“插入参数”按钮访问的。
使用参数提取的示例 Web 应用程序
以下过程提供了在 Web 应用程序中使用参数提取的示例。 此示例对必应主页的“现在流行”部分中的第一项执行查询。 由于此值会定期更改,因此必须首先连接到主页并从响应正文中收集搜索词。 然后,使用此术语生成执行实际搜索的请求。
下面显示了主要必应页面,其中突出显示了“现在流行”部分。
若要确定搜索词在响应正文中的显示位置,可以查看页面的源。 下面显示了源的一部分,其中包含“现在流行”部分的 HTML 代码。 在此 HTML 代码中,只需搜索字符串,如下图所示。 请求由后跟此字符串形成 https://www.bing.com 。
你只需提取术语本身,但将整个字符串包含在参数中更为简单。 此字符串以字符 <h3>现在流行</h3><ul><li><a href=> 开始,以下一次出现 " 结束。 这些是定义参数提取时将使用的值。
记录示例 Web 应用程序
- 使用“如何捕获 Web 应用程序录制”中的过程录制 Web 应用程序。
- 录制时,连接到 https://www.bing.com。
- 根据需要,可以使用浏览器上的选项来查看必应主页的源,并找到 HTML 代码的“现在流行”部分。
- 选择“立即流行”下的第一个搜索词。
- 将录制保存到 Web 应用程序。
- 删除最后一个请求,因为这不是必需的。 若要删除最后一个请求,请选择该请求,然后在“操作”窗格中选择“删除”。 生成的请求应类似于以下 URL:
创建提取规则
选择第一个请求,然后在“操作”窗格中选择“属性”。
选择“提取规则”选项卡。
选择 添加 。 此时会打开“ 添加提取规则 ”对话框。
在“ 添加提取规则 ”对话框中的 “上下文参数名称 ”框中,输入 SearchString。
在“开始”框中,输入 <h3>Common now</h3><ul><li><a href=>。
在 “结尾” 框中,输入 “。 提取规则应类似于下图。
选择“确定”以保存并关闭提取规则。
选择“确定”以保存并关闭请求。
将参数插入请求
选择第二个请求,然后在“操作”窗格中选择“属性”。
在 “常规 ”选项卡上,选择“ 插入”参数。
在“字符串”框中,删除 www.bing.com/ 后的所有文本。
将光标定位在 URL 的末尾,就在 www.bing.com 之后,在“参数”框中选择 SearchString,然后选择“插入”。 这会插入变量 $ParametersContext/SearchString$。 最终请求类似于下图。
选择“确定”关闭对话框。
选择“确定”以保存并关闭请求。 修改的请求序列应类似于下图。
选择“ 应用” 以应用更改,然后关闭 Web 应用程序编辑器。