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

Фотография

Запуск тестов (InternetExplorerDriver) при помощи Maven


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

#1 tab15

tab15

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

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

Отправлено 04 ноября 2014 - 08:50

Всем привет!

Возникла необходимовсть запускать тесты в IE (опыта с этим драйвером к сожалению нет). Получилось настроить и запустить тесты из IDE (Idea).

Следующий шаг - запуск при помощи Maven. Вот тут возникла проблема. Internet Explorer никак не хочет запускаться. Тест валится при обращении к драйверу на java.lang.NullPinterException

Мои действия:

- IEDriverServer.exe скачан в папку C:\IEDriver

- В системную переменную Path добавлен путь C:\IEDriver (на всякий случай и в коде)

- Инициализация драйвера происходит следующим образом

File file = new File("c:/IEDriver/IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());

final DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
сapabilities.setCapability(ШnternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(capabilities);

- maven команда для запуска тестов

mvn -DfailIfNoTests=false test

- OS Windows7 x64, драйвер тоже x64, IE10 (также опробовано на OS Windows server 2003 x86, driver x32, IE8)

 

Уверен, что дело в какой нибудь ерунде, про которую я забыл.

 

Спасибо за советы.


  • 0

#2 barancev

barancev

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

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


Отправлено 04 ноября 2014 - 09:01

Для начала -- Вы забыли рассказать, где же возникает NullPointerException :)


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

#3 tab15

tab15

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

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

Отправлено 04 ноября 2014 - 09:18

Running xxx.xxxxx.tests.BlahTest
java.lang.NullPointerException
at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner.captureScreenshot(ScreenshotTakingJUnit4ClassRunner.java:120)
at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner.access$000(ScreenshotTakingJUnit4ClassRunner.java:24)
at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner$1.testFailure(ScreenshotTakingJUnit4ClassRunner.java:71)
at org.junit.runner.notification.RunNotifier$4.notifyListener(RunNotifier.java:139)
at org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:61)
at org.junit.runner.notification.RunNotifier.fireTestFailures(RunNotifier.java:134)
at org.junit.runner.notification.RunNotifier.fireTestFailure(RunNotifier.java:128)
at org.junit.internal.runners.model.EachTestNotifier.addFailure(EachTestNotifier.java:23)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:275)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at xxx.xxxxx.common.test.endtoend.ScreenshotTakingJUnit4ClassRunner.run(ScreenshotTakingJUnit4ClassRunner.java:79)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:45)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)

Это то что находится в консоли.

В общем у нас есть метод, который делает скриншот при возникновении ошибок.

Думается мне, что судя по логу (ScreenshotTakingJUnit4ClassRunner.java:120), все это дело валится при вызове getWebDriver()

File screenshot = ((TakesScreenshot) testInstance.getWebDriver()).getScreenshotAs(OutputType.FILE);

  • 0

#4 barancev

barancev

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

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


Отправлено 04 ноября 2014 - 09:43

Либо testIntance == null, либо testInstance.getWebDriver() == null

 

Чтобы узнать это -- достаточно запустить тест в отладчике, поставить точку останова на "проблемную" строчку, и посмотреть значения переменных.

 

Опять таки, недостаточно информации, но давайте попробую сделать предположение:

может быть в setup-методе Вы инициализируете локальную переменную driver, а не поле класса?


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

#5 tab15

tab15

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

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

Отправлено 04 ноября 2014 - 10:05

Дело в том что тест не работает (не запускается IE) именно при запуске из коммандной строки. При запуске через IDE все работает. Запускается IE нет никаких проблем. Поэтому при дебаггинге все проходит и нет NullPointerException. Именно поэтому мне кажется, что я где-то что-то упустил

setup-методе Вы инициализируете локальную переменную driver, а не поле класса

Нет все там глобально:) Этот кусочек кода я упростил для наглядности.

 

Выписать значение переменных в консоль тоже не получится - у меня нет прав на изменения в xxx.xxxxx.common.test.endtoend, где и находится источник ошибки


  • 0

#6 tab15

tab15

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

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

Отправлено 04 ноября 2014 - 15:39

Действительно, Алексей, проблема была в testInstance. Наш тест проект - spring проект. Покопавшись я наткнулся на следующую вещь http://stackoverflow...unit-test-error. И действительно, наведя порядок в dependencies, всё заработало.

Хмм 3 дня ушло на поиск проблемы.


  • 0


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

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