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

Организация автоматизированного тестирования
онлайн, начало 28 июня
Школа Тест-Аналитика
онлайн, начало 26 июня
SQL для тестировщиков
онлайн, начало 8 июля
Selenium WebDriver: полное руководство
онлайн, начало 28 июня
Фотография

Eclipse+Selenium+TestNG ошибка с Asserts

TestNG Assert Eclipse Selenium

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

#1 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 21 Август 2015 - 14:37

Уважаемые форумчане,

Подскажите, в чем может быть причина вылета и сбоев при выполнении строки "Assert.assertEquals(expectedTitle, actualTitle);", если закавычить эту строку тест проходит нормально.

Предполагал, что причина в наименовании пути org.testng.Assert - Assert менял на Asserts, но программа не хочет тогда работать. Такой вывод я делал из наименования методов в jar файле, видно на скриншоте, что там написно Asserts.

 

Скриншот текста прикрепил.

Текст теста следующий:

package TestNG;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;


public class DemoTestNG {
      public WebDriver driver = new FirefoxDriver();
      String appUrl = "https://accounts.google.com";


@Test
public void gmailLogin() {
            // launch the firefox browser and open the application url
             driver.get("https://accounts.google.com");
             
// maximize the browser window
             driver.manage().window().maximize();
             
// declare and initialize the variable to store the expected title of the webpage.
             String expectedTitle = "Вход - Google Аккаунты";
             
// fetch the title of the web page and save it into a string variable
             String actualTitle = driver.getTitle();
             Assert.assertEquals(expectedTitle, actualTitle);
             
// enter a valid username in the email textbox
             WebElement username = driver.findElement(By.id("Email"));
             username.clear();
             username.sendKeys("XXXXXXXXXXX");   //добавтье свой майл


    // click on the Next button
             WebElement NextButton = driver.findElement(By.id("next"));
             NextButton.click();


             
// enter a valid password in the password textbox
             WebElement password = driver.findElement(By.id("Passwd"));
             password.clear();
             password.sendKeys("ХХХХХХХХ");  //добавьте свой пароль
             
          // click on the Sign in button
             WebElement SignInButton = driver.findElement(By.id("signIn"));
             SignInButton.click();
             
// close the web browser
             driver.close();
}
}

 

Прикрепленные файлы


  • 0

#2 BabyRoot

BabyRoot

    Специалист

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


Отправлено 21 Август 2015 - 15:23

Потому что на странице другое тире, такое:

Вход – Google Аккаунты

А у вас в коде:
Вход - Google Аккаунты


  • 0

#3 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 24 Август 2015 - 14:10

Пробовал, тест при сравнении (команда Assert) висит и не работает по прежнему, вы пробовали запустить мой приведенный код?

В отчете TestNG следующий fail (провал): (текст заголовка полностью скопировал через html, так что он идентичен)

gmailLogin

java.lang.AssertionError: expected [Вход – Google Аккаунты] but found [Вход – Google Аккаунты] at org.testng.Assert.fail(Assert.java:94) at org.testng.Assert.failNotEquals(Assert.java:496) at org.testng.Assert.assertEquals(Assert.java:125) at org.testng.Assert.assertEquals(Assert.java:178) at org.testng.Assert.assertEquals(Assert.java:188) at TestNG.DemoTestNG.gmailLogin(DemoTestNG.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) at org.testng.internal.Invoker.invokeMethod(Invoker.java:648) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:834) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1142) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) at org.testng.TestRunner.privateRun(TestRunner.java:771) at org.testng.TestRunner.run(TestRunner.java:621) at org.testng.SuiteRunner.runTest(SuiteRunner.java:357) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310) at org.testng.SuiteRunner.run(SuiteRunner.java:259) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1176) at org.testng.TestNG.runSuitesLocally(TestNG.java:1101) at org.testng.TestNG.run(TestNG.java:1009) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) 
 
 
Как вообще должна вести себя система теста после Assert.assertEquals(expectedTitle, actualTitle);   ? Почему зависает?

  • 0

#4 Saga

Saga

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Maryna Kolesnik
  • Город:Киев


Отправлено 25 Август 2015 - 00:43

В ожидаемом результате затаился особый пробел   (скопировался с ним?)

expected [Вход – Google Аккаунты] but found [Вход – Google Аккаунты]

Прикрепленные файлы

  • Прикрепленный файл  nbsp.png   95,58К   0 Количество загрузок:

  • 0

#5 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 25 Август 2015 - 10:13

Копировалось нормально идентично тексту в браузере. По-прежнему не работает правильно.

 

Пока бродят умы, подскажите, как основываясь на данных текстах добавить метод TakesScreenshot в данный в начале топика тест?

 

(Ресурс примеров: http://programcreek....TakesScreenshot, https://selenium.goo...Screenshot.html  ). Как на основе примера 7 и 8 сделать нормальный текст для снятия скриншотов, какие библиотеки подключить?

 

И что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?


  • 0

#6 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 25 Август 2015 - 11:59

И что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?

public, protected: почитайте это и это
void: это
interface: вот это
а вообще, в Google много интересного про основы ООП
 
А по поводу скриншота и интеграции TakesScreenshot
@Test
public void gmailLogin() {
            // launch the firefox browser and open the application url
             driver.get("https://accounts.google.com");
             
// maximize the browser window
             driver.manage().window().maximize();
             
// declare and initialize the variable to store the expected title of the webpage.
             String expectedTitle = "Вход - Google Аккаунты";
             
// fetch the title of the web page and save it into a string variable
             String actualTitle = driver.getTitle();
             Assert.assertEquals(expectedTitle, actualTitle);
             
// enter a valid username in the email textbox
             WebElement username = driver.findElement(By.id("Email"));
             username.clear();
             username.sendKeys("XXXXXXXXXXX");   //добавтье свой майл


    // click on the Next button
             WebElement NextButton = driver.findElement(By.id("next"));
             NextButton.click();


             
// enter a valid password in the password textbox
             WebElement password = driver.findElement(By.id("Passwd"));
             password.clear();
             password.sendKeys("ХХХХХХХХ");  //добавьте свой пароль
             
          // click on the Sign in button
             WebElement SignInButton = driver.findElement(By.id("signIn"));
             SignInButton.click();
             
// close the web browser
             driver.close();
}
заменить на
public void gmailLogin() { //сами действия выносим в отдельный метод
           
// declare and initialize the variable to store the expected title of the webpage.
             String expectedTitle = "Вход - Google Аккаунты";
             
// fetch the title of the web page and save it into a string variable
             String actualTitle = driver.getTitle();
             Assert.assertEquals(expectedTitle, actualTitle);
             
// enter a valid username in the email textbox
             WebElement username = driver.findElement(By.id("Email"));
             username.clear();
             username.sendKeys("XXXXXXXXXXX");   //добавтье свой майл


    // click on the Next button
             WebElement NextButton = driver.findElement(By.id("next"));
             NextButton.click();


             
// enter a valid password in the password textbox
             WebElement password = driver.findElement(By.id("Passwd"));
             password.clear();
             password.sendKeys("ХХХХХХХХ");  //добавьте свой пароль
             
          // click on the Sign in button
             WebElement SignInButton = driver.findElement(By.id("signIn"));
             SignInButton.click();
}

@Test
public void DoTest() { //создаём тест, который будет делать скриншот в случае ошибки

            // начало подготовки к тесту
            // launch the firefox browser and open the application url
            driver.get("https://accounts.google.com");

            // maximize the browser window
            driver.manage().window().maximize();
            // конец подготовки к тесту

            try {
                gmailLogin(); //выполняем тест
                }
            catch ( Exception e) { //если словили любой эксепшн
               try { //попытка сделать и сохранить скриншот
               File screenshotFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
               FileUtils.copyFile(screenshotFile,new File("output/error/lastErrorScreenshot.png"));
               }
               catch ( Exception e1) { //если скриншот сделать не получилось...
                  e1.printStackTrace(); //..пришем стектрейс ошибки
                  }
               }
            
            // close the web browser
            driver.close();
}

  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#7 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 769 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 25 Август 2015 - 12:01

Копировалось нормально идентично тексту в браузере. По-прежнему не работает правильно.

 

Пока бродят умы, подскажите, как основываясь на данных текстах добавить метод TakesScreenshot в данный в начале топика тест?

 

(Ресурс примеров: http://programcreek....TakesScreenshot, https://selenium.goo...Screenshot.html  ). Как на основе примера 7 и 8 сделать нормальный текст для снятия скриншотов, какие библиотеки подключить?

 

И что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?

 

Ты не с того начал. Для того, чтобы писать более-менее вменяемые автотесты, то необходимо знать хотя бы основы Java. Т.е. взять книгу, типо "JAVA для чайников" и почитать.

После этого, вопросы, "что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?" отпадут сами собой. Это важно, а не "как снять скриншот".


  • 0

#8 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 25 Август 2015 - 12:08

Ты не с того начал. Для того, чтобы писать более-менее вменяемые автотесты, то необходимо знать хотя бы основы Java. Т.е. взять книгу, типо "JAVA для чайников" и почитать.
После этого, вопросы, "что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?" отпадут сами собой. Это важно, а не "как снять скриншот".

На собственном опыте могу сказать, что совет правильный, но, к сожалению, малодейственный. Начал изучать вопрос, сразу хочется приделать свистелок и перделок...
Это потом я понял, что сначала основы, потом мишура.
PS кстати, до "правильного" изучения основ я так и не дошёл, всё в процессе изучалось.
  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©


#9 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 25 Август 2015 - 13:29

 

Копировалось нормально идентично тексту в браузере. По-прежнему не работает правильно.

 

Пока бродят умы, подскажите, как основываясь на данных текстах добавить метод TakesScreenshot в данный в начале топика тест?

 

(Ресурс примеров: http://programcreek....TakesScreenshot, https://selenium.goo...Screenshot.html  ). Как на основе примера 7 и 8 сделать нормальный текст для снятия скриншотов, какие библиотеки подключить?

 

И что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?

 

Ты не с того начал. Для того, чтобы писать более-менее вменяемые автотесты, то необходимо знать хотя бы основы Java. Т.е. взять книгу, типо "JAVA для чайников" и почитать.

После этого, вопросы, "что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?" отпадут сами собой. Это важно, а не "как снять скриншот".

 

Да, я просто забыл что такое public - сейчас вспомнил. Даже не читая.


  • 0

#10 aid

aid

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

  • Members
  • PipPipPipPip
  • 445 сообщений
  • ФИО:Николай


Отправлено 25 Август 2015 - 13:48

Ничоси, вона чо, как оно надо оказывается. А я то Философию Java зачем то читал, время тратил, выкину немедленно, спасибо что просветили.


  • 0

#11 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 25 Август 2015 - 13:54

Заменил, только теперь полно ошибок driver cannot be resolved

Scr.jpg

 

 

Для аннотации Test еще ошибки

Scr2.jpg

Прикрепленные файлы

  • Прикрепленный файл  Scr2.jpg   77,38К   0 Количество загрузок:
  • Прикрепленный файл  Scr.jpg   98,06К   0 Количество загрузок:

  • 0

#12 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 25 Август 2015 - 14:20

С ошибками первого рисунка разобрался. Сделал локальное определение  и инициализацию WebDriver driver = null; в первом случае и в аннотации Test тоже.


  • 0

#13 Coder7524

Coder7524

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Антон

Отправлено 25 Август 2015 - 14:58

 

Ты не с того начал. Для того, чтобы писать более-менее вменяемые автотесты, то необходимо знать хотя бы основы Java. Т.е. взять книгу, типо "JAVA для чайников" и почитать.
После этого, вопросы, "что такое public в тексте java? Чем отличаются public void от public interface, или как в примере 5: public Object?" отпадут сами собой. Это важно, а не "как снять скриншот".

На собственном опыте могу сказать, что совет правильный, но, к сожалению, малодейственный. Начал изучать вопрос, сразу хочется приделать свистелок и перделок...
Это потом я понял, что сначала основы, потом мишура.
PS кстати, до "правильного" изучения основ я так и не дошёл, всё в процессе изучалось.

 

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


  • 0

#14 vkazar

vkazar

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

  • Members
  • PipPip
  • 128 сообщений
  • ФИО:Виктор
  • Город:Москва

Отправлено 26 Август 2015 - 09:44

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

Для "спасибо" кнопочка есть (:

А по поводу ошибок - в Вашем же примере driver в методе не инициализируется, я сделал вывод, что инициализация происходит в классе - вот и не обрабатывал никак... а вообще, я на C# пришу)


  • 0

Тестировщик должен быть умнее программиста... ну, по крайней мере, хитрее. ©



Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами TestNG, Assert, Eclipse, Selenium

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

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

Яндекс.Метрика
Реклама на портале