Procedura: creare una regola di estrazione personalizzata
Aggiornamento: novembre 2007
È possibile creare proprie regole di estrazione. A tale scopo, derivare le proprie regole da una classe di regole di estrazione. Le regole di estrazione derivano dalla classe di base ExtractionRule.
In Visual Studio Team System Test Edition sono disponibili alcune regole di estrazione predefinite. Per ulteriori informazioni, vedere Informazioni sulle regole di estrazione.
Nota: |
---|
È possibile anche creare regole di convalida personalizzate. Per ulteriori informazioni, vedere Informazioni sulle regole di convalida. |
Per creare una regola di estrazione personalizzata
Aprire il progetto Test contenente un test Web.
(Facoltativo) Creare un progetto Libreria di classi distinto in cui archiviare la regola di estrazione.
Nota importante: È possibile creare la classe nello stesso progetto in cui si trovano i test. Tuttavia, se si desidera riutilizzare la regola, è preferibile creare un progetto Libreria di classi distinto in cui archiviarla. Se si crea un progetto distinto, è necessario completare i passaggi facoltativi di questa procedura.
(Facoltativo) Nel progetto Libreria di classi aggiungere un riferimento alla dll Microsoft.VisualStudio.QualityTools.WebTestFramework.
Creare una classe che derivi dalla classe ExtractionRule. Implementare i membri Extract e RuleName.
(Facoltativo) Generare il nuovo progetto Libreria di classi.
(Facoltativo) Nel progetto di test aggiungere un riferimento al progetto Libreria di classi che contiene la regola di estrazione personalizzata.
Nel progetto di test aprire un test Web nell'Editor test Web.
Per aggiungere la regola di estrazione personalizzata, fare clic con il pulsante destro del mouse su una richiesta test Web e selezionare Aggiungi regola di estrazione.
Verrà visualizzata la finestra di dialogo Aggiungi regola di estrazione. La regola di convalida personalizzata sarà presente nell'elenco Seleziona una regola, insieme alle regole di convalida predefinite. Selezionare la regola di estrazione personalizzata e fare clic su OK.
Eseguire il test Web.
Esempio
Nell'esempio di codice seguente viene illustrata un'implementazione di una regola di estrazione personalizzata, che estrae il valore da un campo di input specificato. Utilizzare questo esempio come punto di partenza per le regole di estrazione personalizzate.
using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.WebTesting;
using System.Globalization;
namespace ClassLibrary2
{
//-------------------------------------------------------------------------
// This class creates a custom extraction rule named "Custom Extract Input"
// The user of the rule specifies the name of an input field, and the
// rule attempts to extract the value of that input field.
//-------------------------------------------------------------------------
public class CustomExtractInput : ExtractionRule
{
/// Specify a name for use in the user interface.
/// The user sees this name in the Add Extraction dialog box.
//---------------------------------------------------------------------
public override string RuleName
{
get { return "Custom Extract Input"; }
}
/// Specify a description for use in the user interface.
/// The user sees this description in the Add Extraction dialog box.
//---------------------------------------------------------------------
public override string RuleDescription
{
get { return "Extracts the value from a specified input field"; }
}
// The name of the desired input field
private string NameValue;
public string Name
{
get { return NameValue; }
set { NameValue = value; }
}
// The Extract method. The parameter e contains the Web test context.
//---------------------------------------------------------------------
public override void Extract(object sender, ExtractionEventArgs e)
{
if (e.Response.HtmlDocument != null)
{
foreach (HtmlTag tag in e.Response.HtmlDocument.GetFilteredHtmlTags(new string[] { "input" }))
{
if (String.Equals(tag.GetAttributeValueAsString("name"), Name, StringComparison.InvariantCultureIgnoreCase))
{
string formFieldValue = tag.GetAttributeValueAsString("value");
if (formFieldValue == null)
{
formFieldValue = String.Empty;
}
// add the extracted value to the Web test context
e.WebTest.Context.Add(this.ContextParameterName, formFieldValue);
e.Success = true;
return;
}
}
}
// If the extraction fails, set the error text that the user sees
e.Success = false;
e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}", Name);
}
}
}
Imports System
Imports System.Collections.Generic
Imports Microsoft.VisualStudio.TestTools.WebTesting
Imports System.Globalization
Namespace ClassLibrary2
'-------------------------------------------------------------------------
' This class creates a custom extraction rule named "Custom Extract Input"
' The user of the rule specifies the name of an input field, and the
' rule attempts to extract the value of that input field.
'-------------------------------------------------------------------------
Public Class CustomExtractInput
Inherits ExtractionRule
' Specify a name for use in the user interface.
' The user sees this name in the Add Extraction dialog box.
'---------------------------------------------------------------------
Public Overrides ReadOnly Property RuleName() As String
Get
Return "Custom Extract Input"
End Get
End Property
' Specify a description for use in the user interface.
' The user sees this description in the Add Extraction dialog box.
'---------------------------------------------------------------------
Public Overrides ReadOnly Property RuleDescription() As String
Get
Return "Extracts the value from a specified input field"
End Get
End Property
' The name of the desired input field
Private NameValue As String
Public Property Name() As String
Get
Return NameValue
End Get
Set(ByVal value As String)
NameValue = value
End Set
End Property
' The Extract method. The parameter e contains the Web test context.
'---------------------------------------------------------------------
Public Overrides Sub Extract(ByVal sender As Object, ByVal e As ExtractionEventArgs)
If Not e.Response.HtmlDocument Is Nothing Then
For Each tag As HtmlTag In e.Response.HtmlDocument.GetFilteredHtmlTags(New String() {"input"})
If String.Equals(tag.GetAttributeValueAsString("name"), Name, StringComparison.InvariantCultureIgnoreCase) Then
Dim formFieldValue As String = tag.GetAttributeValueAsString("value")
If formFieldValue Is Nothing Then
formFieldValue = String.Empty
End If
' add the extracted value to the Web test context
e.WebTest.Context.Add(Me.ContextParameterName, formFieldValue)
e.Success = True
Return
End If
Next
End If
' If the extraction fails, set the error text that the user sees
e.Success = False
e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}", Name)
End Sub
End Class
end namespace
Il metodo Extract contiene le funzionalità principali di una regola di estrazione. Il metodo Extract nell'esempio precedente assume il valore ExtractionEventArgs che fornisce la risposta generata dalla richiesta coperta da questa regola di estrazione. La risposta contiene HtmlDocument che contiene tutti i tag nella risposta. I tag di input vengono filtrati da HtmlDocument. In ciascun tag di input viene cercato un attributo denominato name il cui valore è uguale all'utente che ha fornito il valore della proprietà Name. Se viene rilevato un tag con questo attributo corrispondente, viene eseguito un tentativo di estrarre un valore contenuto nell'attributo value, se esiste. Se esiste, il nome e il valore del tag vengono estratti e aggiunti al contesto del test Web. La regola di estrazione viene passata.
Vedere anche
Attività
Procedura: aggiungere una regola di estrazione a un test Web
Procedura dettagliata: aggiunta di regole di convalida ed estrazione a un test Web
Procedura: creare una regola di convalida personalizzata