Добрый день. Решил для запуска тестов использовать 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"); }
public class BasicTest {
public static WebDriver driver;
@BeforeTest
@Parameters("browser")
public void beforeTest(String browser) throws Exception{
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");
}
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
@AfterTest
public void afterTest() {
driver.quit();
}
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)
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)