Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не запускаются тесты: NoClassDefFoundError


(Руслан) #1

ещё немного по поводу тестов…

  1. Простые - запускается браузер и тесты отказывают выполняться
    java.lang.NullPointerException
    at Test.testReservationPage(Test.java:26)

это строчка с запуском первого теста
driver.findElement(By.id(“hotel-selection”)).click();

  1. Сложные…та же система запуска, но не стартует

java.lang.NoClassDefFoundError: org/openqa/selenium/interactions/HasInputDevices
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2398)
at java.lang.Class.getDeclaredFields(Class.java:1806)
at org.junit.runners.model.TestClass.(TestClass.java:42)
at org.junit.runners.ParentRunner.(ParentRunner.java:65)
at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:58)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.interactions.HasInputDevices
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
… 30 more


Выполнение тестов на удаленной машине, используя Selenium Server
Выполнение тестов на удаленной машине, используя Selenium Server
(Дмитрий Жарий) #2

Честно говоря, я теряюсь в догадках (и не работал почти никогда с Java). Коллстек мне явно ничем не говорит.

Самые интересные тут строки, это:

Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.interactions.HasInputDevices
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)

Рекомендую вам погуглить решение этой или похожей проблемы.
Я одно нашел, но не знаю ли оно подойдет:


(Дмитрий Жарий) #3

Еще совет. Попробуйте просто запустить тесты в режиме Debug. В таком случае, IDE должна вывалится на строчке, где возникла проблема. Проанализируйте код вокруг. Посмотрите значение переменных. Поднимитесь выше, в вызывающий метод. Возможно, вы найдете проблему, например, null вместо непустого значения и т.п.

Без работы с кодом, я навряд ли могу подсказать что-то конкретное.


(Руслан) #4

ошибка отваливается на первом тесте :smile:

что для использования через
selenium.open("/");

что через :smile:
HPage 1 = new HPage(driver);
Expected hotel = 1.Select_(“Homepage selecting”);


(Pnevmoslon) #5

Гадание по стектрейсу дело неблагодарное :slight_smile:
Первое, что я бы предположил глядя на эту ошибку(java.lang.NoClassDefFoundError) - проблема с конфигурацией проекта.
Касательно NullPointerException - может быть вообще всё, что угодно.
Так что либо выкладывайте исходники, либо предоставляйте больше деталей :slight_smile:
Пару раз встречал у себя такую ошибку, но она так быстро исправлялась, что даже не помню как :slight_smile:


(Jane Tymoschuk) #6

ну не знаю, похоже на то, что изменили версию драйвера а именить импорты для HasInputDevices забыли, попробуйте откатить версию драйвера или обновить версию того, кто ругается на этот импорт


(barancev) #7

Скорее всего у Вас возник конфликт зависимостей – в classpath находятся одновременно старая и новая версия Selenium. Интерфейс HasInputDevices действительно недавно переехал в другой пакет, это случилось в версии 2.35.