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

Фотография

При запуске тестов на HtmlUnitDriver NullPointerException

htmlunitdriverselenium java

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

#1 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 15 января 2016 - 08:39

Добрый день. Решил для запуска тестов использовать HtmlUnitDriver. Сразу столкнулся с проблемой.В BeforeTest я в зависимости от указанного в testNG.xml файле параметра запускаю тест в определенном браузере. Туда же я втулил одним из вариантов выполнения тестов HtmlUnitDriver. В итоге при запуске тестов вылетает ошибка, в чем причина понять не могу. Подскажите пожалуйста, что делаю не так.

Вот лог ошибок:
java.lang.NullPointerException
at basicTests.BasicTest.beforeTest(BasicTest.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:514)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:215)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
at org.testng.TestRunner.beforeRun(TestRunner.java:656)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
at org.testng.SuiteRunner.run(SuiteRunner.java:268)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
at org.testng.TestNG.run(TestNG.java:1064)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)

Disconnected from the target VM, address: '127.0.0.1:54202', transport: 'socket'

Ну и здесь у меня создается екземпляр драйвера:

        if (browser.equalsIgnoreCase("firefox")){
            driver = new FirefoxDriver();
        }
        else if (browser.equalsIgnoreCase("chrome")){
            System.setProperty("webdriver.chrome.driver", "C:\\tools\\drivers\\chromedriver.exe");
            driver = new ChromeDriver();
        }
        else if (browser.equalsIgnoreCase("opera")){
            System.setProperty("webdriver.opera.driver", "C:\\tools\\drivers\\operadriver.exe");
            driver = new OperaDriver();
        }
        else if (browser.equalsIgnoreCase("safari")){
            System.setProperty("webdriver.safari.driver", "C:\\tools\\drivers\\safaridriver.exe");
            driver = new SafariDriver();
        }
        else if (browser.equalsIgnoreCase("ie")){
            System.setProperty("webdriver.ie.driver", "C:\\tools\\drivers\\IEDriverServer.exe");
            driver = new InternetExplorerDriver();
        }
        else if (browser.equalsIgnoreCase("html")){
            System.setProperty("webdriver.html.driver", "C:\\tools\\drivers\\selenium-htmlunit-driver-2.49.0.jar");
            HtmlUnitDriver driver = new HtmlUnitDriver();
            driver.setJavascriptEnabled(true);
            System.out.println("create html driver");
        }

  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 января 2016 - 08:44

59 строчка BasicTest.java это какая?


  • 0

#3 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 15 января 2016 - 08:59

59 строчка BasicTest.java это какая?

driver.manage().deleteAllCookies();


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 января 2016 - 09:13

Драйвер пустой, вот и не смоглись куки удалиться. Копайте почему драйвер не запустился. Правильные пути, всё ли есть.


  • 0

#5 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 15 января 2016 - 09:29

Меня смущает вот эта строчка:

System.setProperty("webdriver.html.driver", "C:\\tools\\drivers\\selenium-htmlunit-driver-2.49.0.jar");


  • 0

#6 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 15 января 2016 - 09:47

Драйвер пустой, вот и не смоглись куки удалиться. Копайте почему драйвер не запустился. Правильные пути, всё ли есть.

Переписал:

else if (browser.equalsIgnoreCase("html")){
    System.setProperty("webdriver.html.driver", "C:\\tools\\drivers\\selenium-htmlunit-driver-2.49.0.jar");
    driver = new HtmlUnitDriver(true);
    System.out.println("create html driver");

BeforeTest отработал нормально

Но теперь в самом тесте посыпались ошибки:

org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot find function bind in object function (D, C, B) {...}. (https://www.test.com/static/js/react-with-addons-0.12.2.js#1)
Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
System info: host: 'DESKTOP-OH3BNTV', ip: '10.1.4.74', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_66'
Driver info: driver.version: HtmlUnitDriver

	at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:554)
	at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:530)
	at PageObjects.Home.HomePage.loadPageFavBet(HomePage.java:36)
	at loginTest.LoginPositiveTest.LoginCorrect(LoginPositiveTest.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)


  • 0

#7 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 15 января 2016 - 10:28

Меня смущает вот эта строчка:

System.setProperty("webdriver.html.driver", "C:\\tools\\drivers\\selenium-htmlunit-driver-2.49.0.jar");

что именно смущает? на сколько я понимаю нужно указать где лежит драйвер? или я не прав?


  • 0

#8 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 15 января 2016 - 10:33

 else if (browser.equalsIgnoreCase("html")){
//            System.setProperty("webdriver.html.driver", "C:\\tools\\drivers\\selenium-htmlunit-driver-2.49.0.jar");
            driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_38);
            System.out.println("create html driver");
        }

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

org.openqa.selenium.ElementNotVisibleException: You may only interact with visible elements
Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
System info: host: 'DESKTOP-OH3BNTV', ip: '10.1.4.74', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_66'
Driver info: driver.version: unknown
at org.openqa.selenium.htmlunit.HtmlUnitWebElement.verifyCanInteractWithElement(HtmlUnitWebElement.java:283)
    at org.openqa.selenium.htmlunit.HtmlUnitWebElement.click(HtmlUnitWebElement.java:142)
    at PageObjects.Accounting.HeaderAccPage.enterClick(HeaderAccPage.java:32)
    at loginTest.LoginPositiveTest.LoginCorrect(LoginPositiveTest.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

В чем здесь может быть проблема?


  • 0

#9 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 января 2016 - 10:56

Он в поме-то у вас есть?



<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.19</version>
</dependency>

  • 0

#10 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 15 января 2016 - 11:04

 

Он в поме-то у вас есть?



<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.19</version>
</dependency>

да, есть


  • 0

#11 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 января 2016 - 15:56

Ошибка " You may only interact with visible elements"

элемент невидим


  • 0

#12 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 18 января 2016 - 08:27

Ошибка " You may only interact with visible elements"

элемент невидим

при использовании firefox driver элемент виден, отрабатывает ок. Я так понимаю если он виден, значит он есть в дом структуре страницы, в таком случае htmlUnitDriver должен тоде его видеть. Или я не прав?


  • 0

#13 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 18 января 2016 - 08:38

Может, он не успел догрузиться хорошо? Надо подождать боольше.


  • 0

#14 barancev

barancev

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

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


Отправлено 18 января 2016 - 11:48

Не стоит надеяться, что HtmlUnit будет хорошо работать с приложениями, которые сильно "насыщены" JavaScript-ом.


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

#15 andrea

andrea

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Лучковский Андрей Юрьевич
  • Город:Киев

Отправлено 19 января 2016 - 13:10

Не стоит надеяться, что HtmlUnit будет хорошо работать с приложениями, которые сильно "насыщены" JavaScript-ом.

тогда как все таки распознать эту грань, когда HtmlUnit не следует использовать?


  • 0

#16 barancev

barancev

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

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


Отправлено 20 января 2016 - 10:03

Не стоит надеяться, что HtmlUnit будет хорошо работать с приложениями, которые сильно "насыщены" JavaScript-ом.

 

тогда как все таки распознать эту грань, когда HtmlUnit не следует использовать?

 

Когда не работает -- тогда и не использовать :)

 

Надёжный признак наличия проблем -- появление сообщений про com.gargoylesoftware.htmlunit.ScriptException

Значит, приложение слишком сложное и оказалось ему не по зубам.


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



Темы с аналогичным тегами htmlunitdriverselenium, java

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

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