ExtractionRule.Extract 方法

更新:2007 年 11 月

当在派生类中重写时,此方法从 HtmlDocument 中提取信息,并将其放入 WebTestContext

命名空间:  Microsoft.VisualStudio.TestTools.WebTesting
程序集:  Microsoft.VisualStudio.QualityTools.WebTestFramework(在 Microsoft.VisualStudio.QualityTools.WebTestFramework.dll 中)

语法

声明
Public MustOverride Sub Extract ( _
    sender As Object, _
    e As ExtractionEventArgs _
)
用法
Dim instance As ExtractionRule
Dim sender As Object
Dim e As ExtractionEventArgs

instance.Extract(sender, e)
public abstract void Extract(
    Object sender,
    ExtractionEventArgs e
)
public:
virtual void Extract(
    Object^ sender, 
    ExtractionEventArgs^ e
) abstract
public abstract function Extract(
    sender : Object, 
    e : ExtractionEventArgs
)

参数

备注

此方法包含核心提取功能。此方法负责从响应中提取数据。

对继承者的说明:

当在派生类中重写时,Extract 方法将提取的值添加到由 e.WebTest.Context 提供的 WebTestContext 中。使用 ContextParameterName 属性来设置添加到 WebTestContext 中的值的名称。如果提取成功,则 e.Success 设置为 true;否则它应设置为 false。

示例

以下是一个使用 ExtractCheckBoxes 自定义提取规则的 Web 测试。其代码可以在 ExtractionRule 处找到。该代码检查 ExtractionEventArgs 中包含的 WebTestResponse 所提供的 HtmlDocument 中的复选框是否存在。结果受测试引擎影响。

namespace TestProject1
{
    using System;
    using System.Collections.Generic;
    using Microsoft.VisualStudio.TestTools.WebTesting;
    using ClassLibrary2;

    public class MyWebTest : WebTest
    {
        public MyWebTest()
        {
            this.PreAuthenticate = true;
        }

        public override IEnumerator<WebTestRequest> GetRequestEnumerator()
        {
            WebTestRequest request1 = new WebTestRequest("https://localhost/ts");
            ExtractCheckBoxes rule1 = new ExtractCheckBoxes();
            rule1.FindCheckedBoxes = true;
            rule1.ContextParameterName = "CheckedBoxes";
            request1.ExtractValues += new EventHandler
                <ExtractionEventArgs>(rule1.Extract);
            ExtractCheckBoxes rule2 = new ExtractCheckBoxes();
            rule2.FindCheckedBoxes = false;
            rule2.ContextParameterName = "";
            request1.ExtractValues += new EventHandler
                <ExtractionEventArgs>(rule2.Extract);
            yield return request1;
        }
    }
}

以下是一个从 ThreadedWebTest 继承的、名为 MyCodedWebTest 的编码 Web 测试。此测试提取隐藏字段。第二个请求将三个控件中包含的窗体信息回发到服务器。

Option Strict Off
Option Explicit On

Imports Microsoft.VisualStudio.TestTools.WebTesting
Imports Microsoft.VisualStudio.TestTools.WebTesting.Rules
Imports System
Imports System.Collections.Generic

Namespace TestProject2
    
    Public Class MyCodedWebTest
        Inherits ThreadedWebTest
        
        Public Sub New()
            MyBase.New
            Me.PreAuthenticate = true
            Me.Proxy = "myproxy.com:80"
        End Sub
        
        Public Overrides Sub Run()
            Dim request1 As WebTestRequest = New WebTestRequest _
                ("https://localhost/MyWebSite")
            request1.ThinkTime = 1
            Dim rule1 As ExtractHiddenFields = New ExtractHiddenFields
            rule1.ContextParameterName = "1"
            AddHandler request1.ExtractValues, AddressOf rule1.Extract
            MyBase.Send(request1)

            Dim request2 As WebTestRequest = New WebTestRequest _
                ("https://localhost/MyWebSite/Default.aspx")
            request2.Method = "POST"
            Dim request2Body As FormPostHttpBody = New FormPostHttpBody
            request2Body.FormPostParameters.Add("__VIEWSTATE", "{{$HIDDEN1" + _
                ".__VIEWSTATE}}")
            request2Body.FormPostParameters.Add("Button1", "Button")
            request2Body.FormPostParameters.Add("TextBox1", "Hello text")
            request2.Body = request2Body
            Dim rule2 As ExtractHiddenFields = New ExtractHiddenFields
            rule2.ContextParameterName = ""
            AddHandler request2.ExtractValues, AddressOf rule2.Extract
            MyBase.Send(request2)
        End Sub
    End Class
End Namespace

权限

另请参见

参考

ExtractionRule 类

ExtractionRule 成员

Microsoft.VisualStudio.TestTools.WebTesting 命名空间

其他资源

如何:创建自定义提取规则