Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Помогите разобраться. Не видит локатор. Java+selenium+testng.

locators
css-selectors
chrome
java
webdriver
testng
selenium
Теги: #<Tag:0x00007fedbb169260> #<Tag:0x00007fedbb169120> #<Tag:0x00007fedbb168fe0> #<Tag:0x00007fedbb168e28> #<Tag:0x00007fedbb168cc0> #<Tag:0x00007fedbb168b80> #<Tag:0x00007fedbb1689f0>

#1

Пишу простенький авто тест Java Webdriver Testng. По какой то причине не видит локатор, хотя локатор прописан правильно.

@BeforeClass
    public static void logIn() {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        //driver.manage().window().maximize();
        driver.get("https://cp.unisender.com/ru/v5/signin"); //unisender

}

        @Test
    public  void userLogin(){
            WebElement username = driver.findElement(By.id("username"));
            username.sendKeys("********@gmail.com");
            WebElement userPass = driver.findElement(By.id("password"));
            userPass.sendKeys("*********");
            driver.findElement(By.cssSelector("button.login__boxButton.login__boxButton_blue.login__boxButton_fullWidth")).click();
           // driver.close();
        }

Ошибка такая
java.lang.NullPointerException
at Head.userLogin(Head.java:28)
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:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

Помогите разобраться, по простому ткните носом куда копать.


#2

С джавой не работаю, потому точно в чем проблема не знаю, но по данному локатору находит 2 элемента.

попробуйте такой css -> #intro_login .login__boxButton_fullWidth


(Pavlo Bida) #3

У вас NullPointerException, а не проблема с поиском елемента. Попробуйте WebDriver driver объявить не в before методе, а в переменных класса. Также уберите слово static у before метода.


(Yaroslav Pernerovskyy) #4

Он у вас не локатор не видит, а драйвер.
Он у вас обьявлен внутри метода logIn() и недоступен из метода userLogin()
Обьявите драйвер как поле класса, а в методе logIn() просто инициализируйте


#5

Спасибо всем, разобрался. Достаточно было сменить фреймворк с testng на junit и все заработало.


(Сергей Кузьмин) #6

@Ktulxy вам не будет трудно расшарить гист - ПОЖАЛУЙСТА - хочется это увидеть! дело в том что вам указали на вероятную причину но то как вы исправили проблему скорее подходит для передачи “penn and teller fool us” show