Selenium Test (junit) зависает, как только тест создает новое окно - PullRequest
1 голос
/ 27 июля 2011

Проблема заключается в том, что после того, как в новом окне появится сообщение spawn, тест зависает после строки waitForPageToLoad (3000) и, наконец, заканчивается время ожидания.Как только тест зависает, если я вручную запускаю какое-то событие в родительском окне, тест начинает нормально выполняться.Поэтому в качестве решения я попытался добавить код, который выбирает родительское окно и запускает какое-то событие.Но этот код не работает вообще.Если кто-то может указать, где я что-то упускаю, или указать на мой неправильный подход.

Шаги, которым я следовал:

  1. Нажмите на ссылку, котораяоткрывает новое окно. ( здесь ссылка = 3018 )

  2. После открытия нового window2 дальнейшие действия не автоматизируютсяи тест просто зависает, пока не истечет интервал времени ожидания, после которого он просто генерирует исключение тайм-аута.

  3. Событие, вызванное вручную ( click link = outbox ) на родительском window1 до истечения времени ожидания.

  4. Выполнение теста нормально и нормально завершается.

Фрагмент кода (работает нормально, если вручную запустить evntв родительском окне):

            selenium.click("link=Last");
            selenium.waitForPageToLoad("30000");
            selenium.click("link=3018");
            selenium.waitForPageToLoad("30000");              
            selenium.selectWindow("window2");
            selenium.selectFrame("relative=up");
            selenium.click("687c55");
            selenium.waitForPageToLoad("30000");
            assertEquals("window2", selenium.getTitle());
            selenium.close();

Фрагмент кода (происходит сбой evn после добавления кода для выбора окна и запуска evnt в родительском окне):

            selenium.click("link=Last");
            selenium.waitForPageToLoad("30000");
            selenium.click("link=3018");
            selenium.waitForPageToLoad("30000");
            selenium.selectWindow("window1");              
            selenium.click("link=Outbox");
            selenium.waitForPageToLoad("30000");
            selenium.selectWindow("window2");
            selenium.selectFrame("relative=up");
            selenium.click("687c55");
            selenium.waitForPageToLoad("30000");
            assertEquals("window2", selenium.getTitle());
            selenium.close();

Я не могу найти причину, по которой мой код все еще не работает после добавления кода, чтобы выбрать родительское окно и запустить нажатием eveнт.Он по-прежнему просто зависает и выбрасывает исключение после истечения времени ожидания.: (

Есть ли какая-либо ошибка с всплывающими окнами обработки селена? Хотели бы у меня какие-либо предложения относительно модификации моего подхода к обработке всплывающих окон в селене

1 Ответ

0 голосов
/ 28 июля 2011

Selenium RC прекрасно работает с всплывающими окнами. Многие наши тесты используют их. Вы не даете понять, какая команда истекает, но я думаю, это либо selectWindow("window2"), либо selectFrame("relative=up").

Если первое, вы, вероятно, получили неправильное имя окна - вы должны использовать то же значение, что и в window.open(url, name, ...).

Если последнее, хорошо, во всплывающем окне есть несколько кадров? Фактически, теперь, когда я думаю об этом, это, вероятно, неудачная команда, поскольку даже в многокадровом окне Selenium начинает фокусироваться на верхнем кадре, поэтому "relative=up" не будет работать.

...