Как использовать регулярное выражение в WatiN

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

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

спасибо


person Community    schedule 28.05.2009    source источник
comment
Похоже, в вашем URL-адресе есть ошибка. Мне кажется, что Type и ID должны быть двумя отдельными строками запроса, другими словами:? Type = Feedback & ID = {guid} вместо? Type = FeedbackID = {guid}   -  person Jose Basilio    schedule 28.05.2009


Ответы (3)


Похоже, что у вас есть URL-адрес с двумя параметрами строки запроса Тип и 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));
person Jose Basilio    schedule 28.05.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
person codybartfast    schedule 28.05.2009

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

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

person Community    schedule 10.06.2009