2009-05-28 25 views
1

WatiN自動化ツールで作業しています。私は正規表現に問題があります。私は、テキストを入力してポップアップウィンドウのボタンをクリックしなければならない状況があります。私はAttachToIEメソッドとURL属性( "http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd")を使用してポップアップに接続しています。WatiNで正規表現を使用する方法

問題は、URLのID値が変化するポップアップが表示されるたびに発生します。だから私はポップアップにアクセスすることができません。誰もがplzは私に、以下のURL (「http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd」)におけるIDの変更値のための正規表現を与えることによって、これを助けることができる

あなた

+0

あなたのURLに間違いがあるようです。 TypeとFeedbackID = {guid}の代わりに、 "?Type = Feedback&ID = {guid}"というように、TypeとIDは2つの別々のクエリ文字列にする必要があります。 –

答えて

0

に感謝し、私はWatiNに慣れていないんだけど、それはそれの実行のように見えますおそらくこれが役に立つかもしれない?

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 

次のパターンは同じ効果があるはずですが、より防御的です。クエリ文字列内のものと一致する必要があります。idが35文字である必要があり、 "PreviousFeedBackId"のような類似のパラメータ名と一致しません。あなただけのIDを抽出したい場合は

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

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

あなたが2クエリ文字列パラメータタイプIDとURLを持っているし、あなたのパターンがあることが表示されます:

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

Find.ByUrl()属性制約メソッドを使用して、そのパターンに一致する正規表現とともにAttachToIE()に渡します。

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には、クエリ文字列を無視してURLを使用できるという点があります。以下は、私のためにうまく動作しているコードです。

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

関連する問題