Selenium-RC Невозможно обработать окно подтверждения - PullRequest
3 голосов
/ 06 июля 2010

Я тестирую веб-приложение, в котором удаляю элемент из списка. После нажатия на кнопку «Удалить» приложение запрашивает подтверждение. Selenium IDE обнаруживает это как окно подтверждения. Когда я запускаю код через RC (C #), он даже ловит окно подтверждения, выполняет нажатие кнопки удаления в этом окне подтверждения, но окно подтверждения никогда не отображается на экране. Далее, он только нажимает на кнопку удаления; элемент не удаляется. Я пробовал вручную, отлично работает.

Пожалуйста, помогите, я новичок в 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 ]

2 голосов
/ 06 июля 2010

Существует несколько команд для обработки подтверждений JavaScript.Selenium по умолчанию выберет «ОК» при подтверждении, если вы не отправите команду chooseCancelOnNextConfirmation.Чтобы получить подтверждение, вам нужно использовать команду getConfirmation.

Ссылка на селен для вышеуказанных команд:

Кроме того, если ваша команда click не показывает подтверждение JavaScript, вы можете обнаружить, что соответствующее событие не запускается.Вы можете попробовать использовать команды mouseDown и mouseUp или команду fireEvent.

1 голос
/ 05 августа 2010

В последнее время я обнаружил, что такое поведение происходит из-за архитектуры селена (точнее, его ядра на основе JavaScript).когда я выполняю тестирование вручную, оставляя открытой селен IDE, это поведение реплицируется.Поэтому я думаю, что сейчас нет немедленного решения этой проблемы.Будет публиковаться здесь, если я найду обходной путь.

Спасибо Дейву за ответы.


Обновление: команда разработчиков сообщила мне, что функция javascript не вызывается при запуске Selele IDE рядом,Это действительно проблема с ядром Selenium Javascript.

Спасибо всем, кто нашел время, чтобы ответить на этот вопрос.

С уважением,Vamyip

...