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

Фотография

Исключение java.lang.reflect.InvocationTargetException при запуске тес


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

#1 almagnit

almagnit

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

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

Отправлено 15 сентября 2011 - 07:25

Написал довольно большой и долгий тест, в коде более 1000 строк, запуская из IDE(Eclipse), все работает отлично.
Запустив jar из консоли получил вот такой стек:
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ExceptionInInitializerError
        at org.openqa.selenium.WebDriverException.getBuildInformation(WebDriverException.java:70)
        at org.openqa.selenium.WebDriverException.createMessage(WebDriverException.java:52)
        at org.openqa.selenium.WebDriverException.getMessage(WebDriverException.java:42)
        at webserver.FillUsers.assertClaimsList(FillUsers.java:566)
        at webserver.FillUsers.assertDepartmentAIB(FillUsers.java:338)
        at webserver.FillUsers.<init>(FillUsers.java:66)
        at webserver.FillUsers.main(FillUsers.java:1000)
        ... 5 more
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
        at java.io.File.<init>(Unknown Source)
        at org.openqa.selenium.internal.BuildInfo.loadBuildProperties(BuildInfo.java:46)
        at org.openqa.selenium.internal.BuildInfo.<clinit>(BuildInfo.java:38)
        ... 12 more
FillUsers.java:566
if(driver.findElements(By.name("claim_actions_button_claim_new_0")).isEmpty()){ log("    Кнопка \"Создать\" не найдена");}else{log("    Кнопка \"Создать\" найдена");}
Этот код в методе, далее идут вызовы этого метода.

Работаю с WebDriver 2.5, установлена jdk-6u26-windows-i586, прямо мистика какая-то, это исключение все время в разных местах вываливается...

Что предпринимать? (я уж не знаю)
  • 0

#2 almagnit

almagnit

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

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

Отправлено 15 сентября 2011 - 19:54

Разобрался, исключение было следствием позднего появления модального окна, которое из-за не достаточного тайм-аута, не обрабатывал объект класса java.awt.Robot.

Есть ли у кого нибудь мысли по поводу того, как избавиться от Thread.sleep(), во время ожидания модального окна?
  • 0

#3 Demetri

Demetri

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

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 16 сентября 2011 - 02:37

Можно сделать ожидание в цикле с обработкой исключения:
long max_wait_time = 60000; // в милисекундах
long start_time = System.currentTimeMillis();
for(;;){
	try{
		/* сюда поместить действие вызывающее эксепшен */
		break;
	}catch(InvocationTargetException e){
		if(System.currentTimeMillis() - start_time > max_wait_time) {
			Throwable e  = new Throwable("Тайм-аут ожидания модального окна");
			throw e;
		}else{
			Thread.sleep(100);
		}
	}
}

  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#4 almagnit

almagnit

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

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

Отправлено 16 сентября 2011 - 05:47

Я делаю примерно также, но выношу такие события в функции, которые в случае исключения возвращают false, и запускаю их в цикле while:
while(!funcStableActions());

  • 0


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

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