Перейти к содержимому

Фотография

работа с попапом


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 01 июня 2011 - 11:28

Привет, я снова со своим траблом:

Требуется:
(открыть попап, навести на него фокус, произвести некие действия в попапе, закрыть попап, вернуться в главное окно) х мильон тысяч раз

Что я делаю:

// сохраняю названия всех открытых окон в массив
 String[] winIDs = selenium.getAllWindowNames();
 int origCount = winIDs.length; // Scan original number of available windows

 selenium.click("//a[2]/img"); //open popup
		 
 int maxTries = 60; // Specify the number of iterations while waiting for new window
 for( int i = 0 ; i < maxTries ; i++ ){	
 winIDs = selenium.getAllWindowNames();
 if( winIDs.length > origCount ){
        break; // If the number of open windows becomes greater than before we exit the loop
	  		 }
			
		 }
		//навожу фокус на попап 
			selenium.selectWindow("name="+winIDs[winIDs.length - 1] );
			Thread.sleep(1000);
			
// совершаю некие действия с попапом
							
			
			selenium.close(); //закрываю попап
			selenium.selectWindow("null"); //возвращаюсь в основное окно


Оно работает, НО:

с каждым вызовом данной функции число окон увеличивается на 1.
То есть закрывая попап, я не удаляю его из памяти.
И тест обваливается, когда количество окон становится равным 9.

А мне нужно мильон тысяч раз :blush:

Моя в замешательстве!
  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 01 июня 2011 - 15:12

Правильно ли я понял, что после вызова selenium.close() это окно по прежнему возвращается в результате вызова selenium.getAllWindowNames()?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 01 июня 2011 - 16:01

Правильно ли я понял, что после вызова selenium.close() это окно по прежнему возвращается в результате вызова selenium.getAllWindowNames()?


Окно попапа закрывается, но следующий вызов метода getAllWindowNames возвращает на 1 окно больше с именем "null". Имя у закрытого попапа было не нулевое..
Утром могу выслать подробный список того, что возвращает этот метод.
  • 0

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 01 июня 2011 - 18:29

Прогнал следующий код в IE9 и FF4 на Win7, не обнаружил роста списка:


        browser.open("http://www.javascript-coder.com/files/window-popup/javascript-window-open-example1.html");
        for (int i = 0; i < 20; i++) {
        	System.out.println(browser.getAllWindowNames().length);
	        browser.click("//a");
	        browser.waitForPopUp("mywindow", "5000");
	        browser.selectWindow("mywindow");
	        browser.close();
	        browser.selectWindow("null");
        }


Может у вас попапы какие-то специальные, не закрываются до конца, а только становятся невидимыми? Нет там никакого JavaScript, вытворяющего подобные штуки?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#5 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 02 июня 2011 - 05:25

Взяла Ваш пример за основу. Написала небольшой тестик:
 public void testpopup() throws InterruptedException {
	    	
	      		  selenium.open("/files/window-popup/javascript-window-open-example1.html"); 
	
	    		  String[] winIDs = selenium.getAllWindowNames();
	    		 
	    		  		 
	    		  System.out.println(winIDs.length);
	    		    		    
	    		    	selenium.click("css=a");
	    		    	Thread.sleep(1000);
	
	    		    	winIDs = selenium.getAllWindowNames();
	    		    	 
	    		    	System.out.println(winIDs.length);
}


И удивилась: количество окон осталось прежним (= 1 с именем [selenium_main_app_window]) после открытия попапа!
В аттаче скриншот с доказательством :)

Прикрепленные файлы


  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 02 июня 2011 - 18:46

Я бы не ждал после клика одну секунду, а добавил browser.waitForPopUp -- подозреваю, что попап просто не успел ещё загрузиться.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 03 июня 2011 - 05:34

Спасибо за помощь в исследовании проблемы. Вот что я выяснила:

Тот же самый код на другом окружении(если быть точной на рабочем компе) выдаёт увеличение количества окон на 1 при открытии попапа, но не даёт уменьшения на 1 при закрытии, просто имя закрытого попама меняется на null [selenium_main_app_window, null] на скриншоте это хорошо видно:

 public void testpopup() throws InterruptedException {
         
         selenium.open("/files/window-popup/javascript-window-open-example1.html"); 

         for (int i = 0; i < 20; i++) {

        String[] winIDs = selenium.getAllWindowNames();
                   
         System.out.println(winIDs.length);
                           
               selenium.click("css=a");
               selenium.waitForPopUp("mywindow", "5000");
                         
               winIDs = selenium.getAllWindowNames();
                
               System.out.println(winIDs.length);
               selenium.selectWindow("mywindow");
               selenium.close();
               selenium.selectWindow("null");	
         
         }
	 }
Вот что оказалось в консоли после выполнения:
1
2
2
2
2
2
2
2
2
2
...
То есть, если каждый раз открывать другой попап, то будет происходить рост количества окон :(

Может быть есть некий метод, убирающий из памяти окна с именем "null" ?

Прикрепленные файлы

  • Прикрепленный файл  null_window.png   37,32К   7 Количество загрузок:

  • 0

#8 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 03 июня 2011 - 05:50

Я ещё маленько подебажила свой скрипт и выяснила интересную особенность:

при количестве открытых окон <=9 новый попап заносится в конец списка, а при открытии десятого попапа, он становится пятым, а количество открытых окон остаётся равным девяти!!!
Мне осталось только добавить в код немного логики по поиску окна с именем отличным от "selenium_main_app_window" или "null".

Надеюсь, эта тема будет кому-то ещё полезна )

Прикрепленные файлы

  • Прикрепленный файл  winID.png   20,58К   7 Количество загрузок:

  • 0

#9 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 03 июня 2011 - 06:32

Спасибо за помощь в исследовании проблемы. Вот что я выяснила:

Тот же самый код на другом окружении(если быть точной на рабочем компе) выдаёт увеличение количества окон на 1 при открытии попапа, но не даёт уменьшения на 1 при закрытии, просто имя закрытого попама меняется на null [selenium_main_app_window, null] на скриншоте это хорошо видно:
.....


Вот что оказалось в консоли после выполнения:
1
2
2
2
2
2
2
2
2
2
...
То есть, если каждый раз открывать другой попап, то будет происходить рост количества окон :(

Где же тут рост? Постоянно выводится длина списка 2.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#10 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 03 июня 2011 - 06:55


Спасибо за помощь в исследовании проблемы. Вот что я выяснила:

Тот же самый код на другом окружении(если быть точной на рабочем компе) выдаёт увеличение количества окон на 1 при открытии попапа, но не даёт уменьшения на 1 при закрытии, просто имя закрытого попама меняется на null [selenium_main_app_window, null] на скриншоте это хорошо видно:
.....


Вот что оказалось в консоли после выполнения:
1
2
2
2
2
2
2
2
2
2
...
То есть, если каждый раз открывать другой попап, то будет происходить рост количества окон :(

Где же тут рост? Постоянно выводится длина списка 2.


Видимо роста нет оттого, что каждый раз открывалось одно и то же окно, и оно записывалось поверх окна с именем "null".
Попробуйте открывать разные окна.
В моём тесте рост идёт уже на сотни, просто иногда имя попапа добавляется не в конец списка, а записывается поверх ранее закрытого окна с именем "null".
  • 0

#11 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 03 июня 2011 - 13:03

Действительно, с большим количеством попапов с разными именами есть проблемы, причём в разных браузерах разные :)

FF 4 -- список растёт, остаются null вместо имен закрытых окон,
Chrome 13 -- список растёт, остаются пустые строки вместо имен закрытых окон,
IE 9 -- список НЕ растёт, но зато скорость выполнения тестов с увеличением количества открытых/закрытых окон заметно снижается.

Надо будет написать баг-репорт.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 05 июня 2011 - 10:45

http://code.google.c.../detail?id=1758

В качестве воркэраунда могу предложить перейти на Selenium 2.0 -- там всё нормально, я проверил, да ещё и работать будет быстрее.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#13 Dary

Dary

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • ФИО:даша

Отправлено 06 июня 2011 - 05:25

Обновила selenium, тесты начали падать на команде getSelectOptions - :(
Пришлось откатить обратно до selenium-2.0b2.

нет в жизни совершенства :'(

PS C Днём рождения!
  • 0

#14 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 06 июня 2011 - 13:04

Обновила selenium, тесты начали падать на команде getSelectOptions - :(
Пришлось откатить обратно до selenium-2.0b2.

Что-то не замечаю такого, работает как часы. Какой браузер? Какое выдается сообщение об ошибке?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных