我正在研究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”)
感谢你
答案 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));