如何在WatiN中使用正则表达式

时间:2009-05-28 08:20:42

标签: regex watin

我正在研究WatiN自动化工具。我在正则表达式中遇到问题。我的情况是我必须输入一些文本并单击弹出窗口中的按钮。我正在使用弹出窗口的AttachToIE方法和URL属性(“http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd”)附加到弹出窗口。

问题是每次弹出窗口显示URL中的ID值都会发生变化。所以我无法访问弹出窗口。任何人都可以通过在下面的URL中为我更改ID值的正则表达式来帮助解决这个问题 ( “http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd”)

感谢你

4 个答案:

答案 0 :(得分:2)

您的网址似乎有2个查询字符串参数类型 ID ,您的模式为:

"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));

答案 1 :(得分: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 :(得分:0)

我对WatiN并不熟悉,但看起来它在.Net上运行,所以这可能会有所帮助?

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”。

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

如果您只想提取ID:

var id = Regex.Match(url, pattern).Value;
Console.WriteLine(id);
//output: ef5ad7ef5490-4656-9669-32464aeba7cd

答案 3 :(得分:0)

WatiN有一个功能,我们可以通过忽略查询字符串来使用url。下面的代码对我来说很好。

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