2009-05-28 10 views
1

Ich arbeite an WatiN Automation Tool. Ich habe Probleme mit dem regulären Ausdruck. Ich habe Situation, wo ich etwas Text eingeben muss und auf eine Schaltfläche im Popup-Fenster klicke. Ich verwende die AttachToIE-Methode und das URL-Attribut ("http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd") des Popups, um es an das Popup anzuhängen.Wie verwende ich regulären Ausdruck in WatiN

Das Problem ist jedes Mal, wenn das Popup erscheint der ID-Wert in der URL ändert sich. Daher kann ich nicht auf das Popup zugreifen. damit jemand plz help von mir geben Regulärer Ausdruck für den sich ändernden Wert von ID in der folgenden URL können („http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd“)

danken Ihnen

+0

Es scheint ein Fehler in Ihrer URL zu sein. Es scheint mir, dass Type und ID 2 separate Abfragezeichenfolgen sein sollten, mit anderen Worten: "? Type = Feedback & ID = {guid}" anstelle von "? Type = FeedbackID = {guid}" –

Antwort

0

bin ich mit WatiN nicht vertraut, aber es sieht aus wie die Läufe auf .Net vielleicht könnte das vielleicht helfen?

var desiredId = "000000000000-0000-0000-000000000000"; 
var url = "http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd&someMoreStuff"; 
var pattern = @"(?i)(?<=FeedBackId=)[-a-z0-9]+"; 
var result = Regex.Replace(url, pattern, desiredId); 
Console.WriteLine(result); 

//Output: http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=000000000000-0000-0000-000000000000&someMoreStuff 

Das folgende Muster sollte den gleichen Effekt haben, ist aber defensiver. Es sollte nur Sachen in der Abfragezeichenfolge übereinstimmen, es erfordert die ID 35 Zeichen und wird nicht mit ähnlichen Parameternamen wie "PreviousFeedBackId" übereinstimmen.

var pattern = @"(?i)(?<=\?.*\bFeedBackId=)[-a-z0-9]{35,35}\b"; 

Wenn Sie nur die ID extrahieren möchten:

var id = Regex.Match(url, pattern).Value; 
Console.WriteLine(id); 
//output: ef5ad7ef5490-4656-9669-32464aeba7cd 
1
string baseUrl ="http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=" 
Regex urlIE= new Regex(baseUrl + "[\\wd]+", RegexOptions.IgnoreCase); 
IE ie = IE.AttachToIE(Find.ByUrl(urlIE); 
2

Es scheint, dass Sie eine URL mit 2 Query-String-Parameter Typ und ID und Ihr Muster ist haben:

"http://192.168.25.10:215/admin/SelectUsers.aspx?Type=Feedback&ID={some id}" 

Sie können verwenden Die Find.ByUrl() Attribut-Constraint-Methode und übergeben Sie es an AttachToIE() wie unten mit dem Regex für das Abgleichen dieses Musters gezeigt.

string url = "http://192.168.25.10:215/admin/SelectUsers.aspx?Type=Feedback&ID=" 
Regex regex = new Regex(url + "[a-z0-9]+", RegexOptions.IgnoreCase); 
IE ie = IE.AttachToIE(Find.ByUrl(regex)); 
0

WatiN verfügt über eine Funktion, in der wir die URL verwenden können, indem wir die Abfragezeichenfolge vernachlässigen. Unten ist der Code, der für mich in Ordnung ist.

string baseUrl = "http://192.168.25.10:215/admin/SelectUsers.aspx"; IE ie = IE.AttachToIE (Find.ByUrl (baseUrl, true));