Я использую инструмент тестирования WatiN и пишу скрипты c # .net. У меня есть сценарий, в котором мне нужно изменить тему моей веб-страницы, поэтому для этого мне нужно щелкнуть кнопку изображения, которая открывает всплывающее окно ajax с изображением, и кнопку «Применить тему», которая теперь находится под изображением. необходимо нажать на кнопку, поэтому, пожалуйста, предложите какое-нибудь решение, как это сделать.
Скрипт Watin для обработки всплывающих окон Ajax
Ответы (4)
Итак, сначала нажмите кнопку, которая вызывает всплывающее окно, и .WaitUntilExists () для кнопки внутри всплывающего окна.
IE.Button("ShowPopup").click()
IE.Button("PopupButtonID").WaitUntilExists()
IE.Button("PopupButtonID").click()
Это может не сработать, если кнопка во всплывающем окне существует, но скрыта от просмотра. В этом случае вы можете попробовать .WaitUntil () и указать атрибут для поиска.
IE.Button("ButtonID").WaitUntil("display","")
Всплывающее окно Ajax само по себе не должно создавать проблем, если вы обрабатываете время загрузки элемента управления асинхронно. Если вы используете набор инструментов управления ajax, вы можете решить эту проблему следующим образом
int timeout = 20;
for (i=0; i < timeout; i++)
{
bool blocked = Convert.ToBoolean(ie.Eval("Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack();"));
if (blocked)
{
System.Threading.Thread.Sleep(200);
}
else
{
break;
}
}
Когда элемент управления виден, вы сможете получить к нему доступ в обычном режиме.
В Watin 1.1.4 также добавлена поддержка WaitUntil для элементов управления, но я лично не использовал ее.
// Wait until some textfield is enabled
textfield.WaitUntil("disable", false.ToSting, 10);
Я не использую какой-либо набор инструментов управления ajax, а во всплывающем окне нет текстового поля, как я уже упоминал, есть только изображение и кнопка под ним, которые мне нужно щелкнуть, чтобы применить это изображение в качестве темы.
Я написал сообщение о том, как я выполняю синхронизацию ajax, поскольку у меня были проблемы с WaitUntilExists: http://lebobitz.wordpress.com/2011/03/06/synchronizing-watin-and-ajax-with-jquery/