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

Фотография

Видать с аджаксом че-то, хелп ми


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

#1 masterprof

masterprof

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 20 мая 2008 - 14:16

Приветствую, уважаемые

Преамбула:
Начал разбираться с Selenium rc. Пробую автоматизировать работу с некоторыми сайтами для упрощения повседневной работы в части продвижения сайтов.

Амбула:
ОС Linux, firefox 2.0.0.13
Есть сайт закладок http://myscoop.ru
Построен с использованием аджакса
Есть меню "Зарегистрироваться", после клика на нем появляется формочка, которую нужно заполнить
и кликнуть на кнопку "Зарегистрировать"
Если вручную все проделывать, то все ок.
С использованием селениума что-то не получается: формочка вызывается и заполняется, но на кнопку "Зарегистрировать" ноль реакции

Код на перле

#!/usr/bin/perl

use WWW::Selenium;
use utf8;

my $browser = WWW::Selenium->new( host => "localhost",
							  port => 4444,
							  browser => "*chrome",
							  browser_url => "http://myscoop.ru/",
							  auto_stop => 0
							);
$browser->start();
$browser->open("http://myscoop.ru/");
$browser->pause(3000);

$browser->click('link=пв‰?пв•џяв”Ђпв•ЈпЁп╦яв”‚яв”Њяв”Ђп╦яв”Ђп╬пв•Ўпв•џяв”Њяв–„яв”‚яв–ђ');
$browser->pause(3000);

$browser->type('register_login', 'userasdsgdfgfsfgd');
$browser->type('register_password', 'password');
$browser->type('register_retype_password', 'password');
$browser->type('register_email', 'mail@sobachka.com');

my $captcha = '12345';
$browser->type('register_captcha_code', $captcha);
$browser->click('register_button');
$browser->pause(3000);

Пробовал и на пхп, тот же результат
Подскажите в каком направлении копать

Вот лог на всяк случай
17:24:27.613 INFO - Java: Sun Microsystems Inc. 10.0-b19
17:24:27.618 INFO - OS: Linux 2.6.22-gentoo-r1 i386
17:24:27.632 INFO - v1.0-SNAPSHOT [1123], with Core v1.0-SNAPSHOT [2081]
17:24:28.079 INFO - Version Jetty/5.1.x
17:24:28.100 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
17:24:28.102 INFO - Started HttpContext[/selenium-server,/selenium-server]
17:24:28.102 INFO - Started HttpContext[/,/]
17:24:28.156 INFO - Started SocketListener on 0.0.0.0:4444
17:24:28.159 INFO - Started org.mortbay.jetty.Server@17471e0
17:24:51.302 INFO - Checking Resource aliases
17:24:51.332 INFO - Command request: getNewBrowserSession[*chrome, http://myscoop.ru/] on session null
17:24:51.333 INFO - creating new remote session
17:24:51.650 INFO - Allocated session 86fe2eabcbbd494ab821a0a37ea777a9 for http://myscoop.ru/, launching...
17:24:51.865 INFO - Preparing Firefox profile...
17:24:54.861 INFO - Launching Firefox...
17:24:58.033 INFO - Got result: OK,86fe2eabcbbd494ab821a0a37ea777a9 on session 86fe2eabcbbd494ab821a0a37ea777a9
17:24:58.074 INFO - Command request: open[http://myscoop.ru/, ] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:03.882 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:06.893 INFO - Command request: click[link=Зарегистрироваться, ] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:07.016 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.022 INFO - Command request: type[register_login, userasdsgdfgfsfgd] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.039 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.049 INFO - Command request: type[register_password, password] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.082 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.089 INFO - Command request: type[register_retype_password, password] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.113 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.121 INFO - Command request: type[register_email, mail@sobachka.com] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.146 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.155 INFO - Command request: type[register_captcha_code, 12345] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.183 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.192 INFO - Command request: click[register_button, ] on session 86fe2eabcbbd494ab821a0a37ea777a9
17:25:10.221 INFO - Got result: OK on session 86fe2eabcbbd494ab821a0a37ea777a9

  • 0

#2 NLord

NLord

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

  • Members
  • PipPip
  • 108 сообщений

Отправлено 20 мая 2008 - 14:29

Сразу после type() попробуйте вставить fireEvent(locator, eventName). 'blur', 'mouseOver' и т.д. .
  • 0
"Меня терзают смутные сомненья..." что это работает.

#3 Estrella

Estrella

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Черненко Ирина Владимировна

Отправлено 20 мая 2008 - 14:32

Можно это обойти примерно так:

[codebox] boolean reg = false;
for (int second = 0; second < 120; second++) {
try {
if (selenium.isElementPresent("register_login")) {
reg = true;
break;
}
}
catch (Exception ignore) {
}
pause(1000);
}
assertTrue(reg);

selenium.type("register_login", "userasdsgdfgfsfgd");
..............
[/codebox]


тоесть мы ждем до тех пор, пока элемент register_login не появится на странице. Как только появился - останавливаем цикл и юзаем его.
Пробуйте реализоватть на перле.
  • 0
Кто сказал, что здесь все работает??
http://for-software-...s.blogspot.com/

#4 masterprof

masterprof

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 20 мая 2008 - 14:36

Сразу после type() попробуйте вставить fireEvent(locator, eventName). 'blur', 'mouseOver' и т.д. .

Это не помогает. Уже по-разному пробовал

дело в том, что не работает даже в случае сокращенной версии скрипта. Хотя должен алерт в браузере появляться
#!/usr/bin/perl

use WWW::Selenium;
use utf8;

my $browser = WWW::Selenium->new( host => "localhost",
							  port => 4444,
							  browser => "*chrome",
							  browser_url => "http://myscoop.ru/",
							  auto_stop => 0
							);

$browser->start();

$browser->open("http://myscoop.ru/");
$browser->pause(3000);

$browser->click('link=п.пв•џя.пв•ЈпЁп╦я.я.я.п╦я.п╬пв•Ўпв•џя.я.я.я.');
$browser->pause(3000);
$browser->click('register_button');
$browser->pause(3000);

  • 0

#5 masterprof

masterprof

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 20 мая 2008 - 14:55

Можно это обойти примерно так:

boolean reg = false;		for (int second = 0; second < 120; second++) {			try {				if (selenium.isElementPresent("register_login")) {					reg = true;					break;				}			}			catch (Exception ignore) {			}			pause(1000);		}		assertTrue(reg);selenium.type("register_login", "userasdsgdfgfsfgd");..............


тоесть мы ждем до тех пор, пока элемент register_login не появится на странице. Как только появился - останавливаем цикл и юзаем его.
Пробуйте реализоватть на перле.


да нет, здесь дело в чем-то другом. Смотрите мой предыдущий пост.
Даже если ставлю паузы в 30сек, то ничего не меняется
  • 0

#6 NLord

NLord

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

  • Members
  • PipPip
  • 108 сообщений

Отправлено 20 мая 2008 - 21:26

дело в том, что не работает даже в случае сокращенной версии скрипта. Хотя должен алерт в браузере появляться


В *chrome и *iehta вот такой кусок у меня отрабатывает (т.е. вбивает, нажимает, ассерт проходит):

@Test
	public void kakojtoTest() throws Exception {
		selenium.open("http://myscoop.ru/");
		selenium.click("link=Зарегистрироваться");
		selenium.type("register_login", "12332131");
		selenium.click("register_button");
		
		assertEquals("Минимальная длина пароля : 6 символов", selenium.getAlert());
		
		selenium.click("document.forms[4].submit2");				
		
	}

  • 0

#7 masterprof

masterprof

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 21 мая 2008 - 06:41

дело в том, что не работает даже в случае сокращенной версии скрипта. Хотя должен алерт в браузере появляться


В *chrome и *iehta вот такой кусок у меня отрабатывает (т.е. вбивает, нажимает, assert проходит):

@Test
	public void kakojtoTest() throws Exception {
		selenium.open("http://myscoop.ru/");
		selenium.click("link=Зарегистрироваться");
		selenium.type("register_login", "12332131");
		selenium.click("register_button");
		
		assertEquals("Минимальная длина пароля : 6 символов", selenium.getAlert());
		
		selenium.click("document.forms[4].submit2");				
		
	}

Ура ура, гранд сенкс. Все получилось
Действительно проблемка в обработке алертов заключалась

Еще раз огроменное спасибо
  • 0


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

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