1

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

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

感谢您

4

4 回答 4

2

看来您有一个带有 2 个查询字符串参数TypeID的 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));
于 2009-05-28T10:45:37.113 回答
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);
于 2009-05-28T10:03:01.210 回答
0

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

字符串 baseUrl = " http://192.168.25.10:215/admin/SelectUsers.aspx "; IE 即 = IE.AttachToIE(Find.ByUrl(baseUrl,true));

于 2009-06-10T09:35:28.507 回答
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
于 2009-05-28T08:50:41.997 回答