Selenium-RC не может обрабатывать окно подтверждения
Я тестирую веб-приложение, в котором я удаляю элемент из списка. При нажатии на кнопку Удалить приложение запрашивает подтверждение. Selenium IDE распознает его как окно подтверждения. Когда я запускаю код через RC (C#), он даже ловит окно подтверждения, выполняет нажатие кнопки delete на этом окне подтверждения, но, окно подтверждения никогда не видно на экране. Далее, он только нажимает на кнопку удалить; элемент не удаляется. Я попробовал вручную, работает нормально.
Пожалуйста помогите, я новичок в Selenium и пытался найти ответы на нескольких форумах без какого-либо успеха.
Вот код:
string confirmation;
for (int second = 0;; second++) {
if (second >= 60) Assert.Fail("timeout");
try
{
confirmation=selenium.GetConfirmation();
if ((confirmation == " Delete confirmation message")) break;
}
catch (Exception e)
{
PrintLog("Error while waiting for confirmation. Error: "+e.Message);
}
Thread.Sleep(1000);
}
try
{
Assert.IsTrue(confirmation == "Delete confirmation message");
}
catch (AssertionException e)
{
PrintLog(e.Message);
}
selenium.FireEvent("//a[@id='btnOkConfirm']","click");
После последнего утверждения выбранный элемент должен быть удален, а страница должна обновиться, но ничего не происходит. Все, что я вижу, это "Javascript:;", написанное в строке состояния окна firefox. Я думаю, что его проблематично получить javascript hrefs работает в selenium-rc.
Спасибо,
Vamyip
2 ответов:
Существует ряд команд для работы с подтверждениями JavaScript. Selenium по умолчанию выберет " OK " при подтверждении, если вы не отправите команду
chooseCancelOnNextConfirmation. Для того, чтобы использовать подтверждение, вам нужно будет использовать командуgetConfirmation.Ссылка на селен выше команды:
- http://release.seleniumhq.org/selenium-core/1.0/reference.html#storeConfirmation
- http://release.seleniumhq.org/selenium-core/1.0/reference.html#chooseCancelOnNextConfirmation
- http://release.seleniumhq.org/selenium-core/1.0/reference.html#chooseOkOnNextConfirmation
Кроме того, если ваша команда
clickне показывает подтверждение JavaScript, вы можете обнаружить, что соответствующее событие не быть уволенным. Вы можете попробовать использовать командыmouseDownиmouseUpили командуfireEvent.
Недавно я обнаружил, что такое поведение происходит из-за архитектуры selenium(точнее, его ядра на основе javascript). когда я делаю тест вручную, сохраняя Selenium IDE открытым, это поведение реплицируется. Поэтому я думаю, что сейчас нет немедленного решения этой проблемы. Опубликую здесь, если найду обходной путь.
Спасибо Дейву за ответ.
Update: команда разработчиков сообщила мне, что функция javascript не вызывается с помощью selenium Идэ бежит рядом. Это действительно проблема с ядром Javascript Selenium.
Спасибо всем, кто нашел время ответить на этот вопрос.С уважением,
Vamyip
Comments