Как использовать регулярные выражения в WatiN - PullRequest
1 голос
/ 28 мая 2009

Я работаю над инструментом автоматизации WatiN. У меня проблема с регулярным выражением. У меня ситуация, когда мне нужно ввести текст и нажать кнопку во всплывающем окне. Я использую метод AttachToIE и атрибут URL ("http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd") всплывающего окна для прикрепления к всплывающему окну.

Проблема заключается в том, что каждый раз, когда во всплывающем окне появляется значение идентификатора в URL, изменяется. Так что я не могу получить доступ к всплывающему окну. Может кто-нибудь PLZ помочь с этим, давая мне регулярное выражение для изменения значения идентификатора в URL ниже ( "http://192.168.25.10:215/admin/SelectUsers.aspx?Type=FeedbackID=ef5ad7ef5490-4656-9669-32464aeba7cd")

благодарю вас

Ответы [ 4 ]

2 голосов
/ 28 мая 2009

Похоже, что у вас есть URL с 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 голос
/ 28 мая 2009
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);
0 голосов
/ 10 июня 2009

WatiN имеет функцию, в которой мы можем использовать URL, пренебрегая строкой запроса. Ниже приведен код, который отлично работает для меня.

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

0 голосов
/ 28 мая 2009

Я не знаком с 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

Следующая схема должна иметь такой же эффект, но более оборонительная. Он должен соответствовать только вещам в строке запроса, для него требуется, чтобы идентификатор был равен 35 символам, и он не будет совпадать с аналогичными именами параметров, такими как «PreviousFeedBackId».

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
...