ExtractionRule.Extract - метод
При переопределении в производном классе этот метод извлекает сведения из документа 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 _
)
public abstract void Extract(
Object sender,
ExtractionEventArgs e
)
public:
virtual void Extract(
Object^ sender,
ExtractionEventArgs^ e
) abstract
abstract Extract :
sender:Object *
e:ExtractionEventArgs -> unit
public abstract function Extract(
sender : Object,
e : ExtractionEventArgs
)
Параметры
sender
Тип: ObjectИсточник события.
e
Тип: Microsoft.VisualStudio.TestTools.WebTesting.ExtractionEventArgsОбъект ExtractionEventArgs, содержащий данные события.
Заметки
Этот метод содержит основные функциональные возможности извлечения. Он отвечает за извлечение данных из ответа.
Примечания для наследующих объектов
При переопределении в производном классе метод Extract добавляет извлеченное значение в контекст WebTestContext, содержащийся в объекте e.WebTest.Context. Имя значения, добавляемого к контексту WebTestContext, задается с помощью свойства ContextParameterName. Если процесс извлечения выполнен успешно, параметр e.Success получает значение true; в противном случае — значение false.
Примеры
В следующем веб-тесте производительности используется пользовательское правило извлечения ExtractCheckBoxes. Соответствующий код можно найти в разделе ExtractionRule. Код проверяет наличие флажков в документе HtmlDocument ответа WebTestResponse, который содержится в аргументах ExtractionEventArgs. Результаты передаются обработчику тестов.
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;
}
}
}
Далее показан закодированный веб-тест производительности MyCodedWebTest, который наследует от ThreadedWebTest. Этот тест извлекает скрытые поля. Второй запрос возвращает на сервер сведения формы, которые содержатся в трех элементах управления.
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
Безопасность платформы .NET Framework
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Для получения дополнительной информации см. Использование библиотек из не вполне надежного кода.
См. также
Ссылки
Microsoft.VisualStudio.TestTools.WebTesting - пространство имен
Другие ресурсы
Кодирование пользовательского правила извлечения для веб-теста производительности