Рубрики
Без рубрики

Автоматическое Тестирование С Помощью JUnit И Selenium Для Совместимости С Браузерами

В этой статье упоминается автоматическое кросс-браузерное тестирование с помощью JUnit и Selenium для веб-приложения с помощью простого скрипта. Помечен как junit, selenium, java, веб-разработчик.

Кросс-браузерное тестирование как мы знаем, это процесс, при котором вы тестируете свой веб-сайт в нескольких браузерах и версиях браузеров, работающих в разных операционных системах. Это делается для обеспечения кроссбраузерной совместимости веб-сайта или веб-приложения при доступе через различные браузеры. Если ваше веб-приложение не совместимо с кросс-браузером, вы не только потеряете потенциальных клиентов, но и можете пострадать от удержания клиентов. Эти различия в браузерах могут быть чем угодно, от проблем с кроссбраузерной компоновкой до кроссбраузерной совместимой типографии и эти межбраузерные различия возникают из-за того, что каждый браузер имеет уникальный механизм рендеринга, который отвечает за рендеринг веб-элементов.

Однако кросс-браузерное тестирование может занять много времени, если оно выполняется вручную. Подумайте о том, со сколькими версиями браузеров вам придется столкнуться, от устаревших до современных, и о большом разнообразии браузеров, доступных на рынке. Вам также придется рассмотреть конкретные браузеры, предлагаемые конкретными компаниями мобильной торговли. Существуют способы, которыми вы могли бы ускорить свои усилия по ручному кроссбраузерному тестированию и автоматизированному тестированию занимает первое место в списке для экономии ежедневного времени и усилий.

В этой статье упоминается автоматизированное тестирование с помощью JUnit и Selenium для веб-приложения с помощью простого скрипта.

JUnit – это инструмент модульного тестирования с открытым исходным кодом , который помогает тестировать единицы кода. Он в основном используется для модульного тестирования Java-проекта, однако его можно использовать с Selenium Webdriver для автоматизации тестирования веб-приложений . Таким образом, вы даже можете выполнить автоматизированное тестирование веб-приложения с помощью JUnit. Если быть точным, JUnit – это модульная платформа тестирования для Java, которая помогает писать тестовые примеры в более структурированном и улучшенном формате. Selenium и JUnit можно использовать независимо друг от друга, благодаря тому, что тестирование с использованием JUnit и Selenium в сочетании помогает писать тестовые примеры более структурированным способом. Мы рассмотрим следующие разделы для автоматизации тестового сценария для тестирования веб-приложений с помощью JUnit и Selenium grid:

  • Загрузка банок JUnit.
  • Добавление банок в ваш проект Selenium.
  • Включение аннотаций и методов JUnit в ваши первые сценарии selenium.
  • Облачное тестирование с помощью JUnit и Selenium с использованием лямбда-теста.

Шаг 1. Загрузка банок JUnit

Файлы jar JUnit можно загрузить с https://github.com/JUnit-team/JUnit4/wiki/Download-and-Install . Основными включенными файлами jar являются:

  • Основными включенными файлами jar являются:
  • Основными включенными файлами jar являются:

Загрузите и сохраните эти файлы в своей системе.

Шаг 2. Добавление Банок В Ваш Проект Selenium

Чтобы добавить внешние jar-файлы JUnit в свой проект, вам необходимо иметь продвинутый редактор кода/компилятор по вашему выбору. Обычно я работаю с eclipse, поэтому буду рассказывать, используя то же самое. Вам также необходимо загрузить файлы Selenium jar. Для того чтобы установить eclipse, вы можете обратиться к его официальному сайту. В зависимости от вашей операционной системы Windows или операционной системы вы можете загрузить соответствующие файлы. После установки Eclipse вы можете загрузить файлы Selenium jar с его официального веб-сайта . Для создания сценариев Selenium webdriver вам необходимо использовать драйверы, зависящие от языка пользователя. В нашем случае мы используем Java, поскольку Selenium grid поддерживает несколько языков, таких как C#, Ruby, Python, Javascript, а также Java. Загрузите файлы Selenium jar и включите их в рабочее пространство редактора кода/компилятора, теперь для сценария тестирования автоматизации для тестирования с JUnit и Selenium grid нам необходимо включить наши загруженные файлы Jar JUnit. Для этого выполните следующие действия:

  • Щелкните правой кнопкой мыши на созданном вами проекте и выберите свойства:

  • Нажмите на путь сборки Java в настройках:

  • Нажмите на кнопку “Добавить внешние банки”, добавьте загруженные файлы JUnit Jar и нажмите “ОК”, опубликуйте это:

Это добавит файлы jar JUnit в ваш проект Selenium. Основными файлами классов/исходными файлами, которые обычно используются в этих файлах JUnit Jar, являются:

  • Утверждения
  • Аннотации
  • Параметризованный
  • Игнорировать
  • Тестовые слушатели и т.Д

Для получения подробного списка файлов классов или исходных файлов обратитесь сюда. Теперь давайте включим JUnit в ваш проект Selenium для продолжения тестирования веб-приложений с помощью JUnit и Selenium.

Шаг 3. Включение JUnit В Ваш Сценарий Selenium

Первым блоком для создания совместной работы в этой статье для тестирования с JUnit и Selenium для веб-приложения будет создание нашего первого простого сценария JUnit Selenium на https://www.lambdatest.com/ .

Справочный код:

import static org.junit.Assert.*;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;



public class Lamdatest_Junit {

    static WebDriver driver;
    
    @BeforeClass
    public static void BrowserOpen()
    {
        System.setProperty("webdriver.chrome.driver", "path of your chromedriver"); 
        driver= new ChromeDriver() ;
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    }
    
    @test

    public void Register_User()
    {
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.get("https://www.lambdatest.com/ ");
        driver.manage().window().maximize();
        driver.findElement(By.xpath("//a[text()='Free Sign Up']")).click();
        driver.findElement(By.xpath("//input[@name='organization']")).sendKeys("LambdaTest");
        driver.findElement(By.xpath("//input[@name='first_name']")).sendKeys("Test");
        driver.findElement(By.xpath("//input[@name='last_name']")).sendKeys("User");
        driver.findElement(By.xpath("//input[@name='email']")).sendKeys("User2@gmail.com");
        driver.findElement(By.xpath("//input[@name='password']")).sendKeys("TestUser123");
        driver.findElement(By.xpath("//input[@name='phone']")).sendKeys("9412262090");
        driver.findElement(By.xpath("//button[text()='SIGN UP']")).click();
        String url= driver.getCurrentUrl();
        assertEquals("fail- unable to register", url, "https://accounts.lambdatest.com/user/email-verification");
    }
        
    
    @AfterClass
    public static void BrowserClose()
    {
        
        driver.quit();
    }
    

    }

Подробности:

Приведенный выше скрипт открывает браузер с помощью https://www.lambdatest.com/ и нажимает на кнопку “бесплатная регистрация”, чтобы зарегистрироваться. После регистрации скрипт проверит URL-адрес, на который он перенаправлен, чтобы убедиться в успешной регистрации. Мы использовали два класса JUnit, один из которых Аннотации класс, а другой Утверждения .

Сценарий состоит из трех разделов:

  • @BeforeClass – Эта аннотация запускает фрагмент кода перед запуском любой аннотации в классе . Как вы можете видеть, здесь мы открыли браузер Chrome, прежде чем выполнять какие-либо действия с ним. Основные действия выполняются в методе @test с пометкой аннотации.
  • @test – Этот метод тестирования обеспечивает функциональность, при которой открывается приложение и выполняется процесс регистрации. Для проверки результата мы использовали класс утверждений, в котором мы проверяем успешность процесса регистрации, используя контекст текущего URL-адреса. Эта тестовая аннотация запускает фрагмент кода после методов @BeforeClass и @BeforeTest и перед методами @Aftertaste и @AfterClass .
  • @Последующий урок- Эта аннотация указывает JUnit запускать фрагмент кода после выполнения всех тестов . Этот метод аннотации обычно выполняет процесс закрытия браузера после выполнения всех действий.

Прилагаю видео выполнения вышеупомянутого скрипта:

До сих пор вы видели, как автоматизировать тестирование веб-приложений с помощью JUnit и Selenium с использованием локального экземпляра webdriver. Однако у этого есть и обратная сторона. Вы можете вызвать автоматическое кросс-браузерное тестирование только в браузерах, установленных на вашем компьютере. Кроме того, вам необходимо иметь свой компьютер каждый раз, когда вы хотите запустить автоматизированное тестирование с помощью JUnit и Selenium для веб-приложения. Именно поэтому тестирование в облаке становится доминирующим предпочтением во всем мире. Лямбда-тест – это облачный инструмент кросс-браузерного тестирования , который предлагает поддержку Selenium grid, предоставляя решение всех препятствий, с которыми вы сталкиваетесь при выполнении тестирования автоматизации с использованием вашего локального компьютера. Лямбда-тест предлагает сетку Selenium, состоящую из более чем 2000 браузеров, чтобы вы могли легко выполнять автоматизированное тестирование.

Позвольте мне продемонстрировать, как вы могли бы легко выполнить автоматизированное тестирование с помощью лямбда-теста.

Чтобы запустить свой набор тестов в нашей сетке Selenium, вам необходимо настроить несколько функций, чтобы ваши тесты выполнялись в удаленном браузере. Обратитесь к нашему инструменту генератора возможностей, который поможет вам легко получить желаемые возможности.

WebDriver driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + "@beta
.lambdatest.com/wd/hub"),
DesiredCapabilities.firefox());

Теперь давайте начнем с простого теста Selenium WebDriver. Ниже приведен скрипт JUnit Selenium, который откроет пример приложения, которое будет выполнять следующую задачу:

  1. Отметьте первые два пункта как “готово”.
  2. Добавьте новый элемент в список.
  3. Верните добавленный товар.
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.URL;
 
public class JUnitTodo {
     public String username = "YOUR_USERNAME";
    public String authkey = "YOUR_ACCESS_KEY";
    public static RemoteWebDriver driver = null;
    public String gridURL = "@beta
.lambdatest.com/wd/hub";
    boolean status = false;
  
    @Before
    public void setUp() throws Exception {
       DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("browserName", "chrome");
        capabilities.setCapability("version", "70.0");
        capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
        capabilities.setCapability("build", "LambdaTestSampleApp");
        capabilities.setCapability("name", "LambdaTestJavaSample");
        capabilities.setCapability("network", true); // To enable network logs
        capabilities.setCapability("visual", true); // To enable step by step screenshot
        capabilities.setCapability("video", true); // To enable video recording
        capabilities.setCapability("console", true); // To capture console logs
        try {
            driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
        } catch (MalformedURLException e) {
            System.out.println("Invalid grid URL");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
  
    @test

    public void testSimple() throws Exception {
       try {
              //Change it to production page
            driver.get("https://4dvanceboy.github.io/lambdatest/lambdasampleapp.html");
             
              //Let's mark done first two items in the list.
              driver.findElement(By.name("li1")).click();
            driver.findElement(By.name("li2")).click();
             
             // Let's add an item in the list.
              driver.findElement(By.id("sampletodotext")).sendKeys("Yey, Let's add it to list");
            driver.findElement(By.id("addbutton")).click();
             
              // Let's check that the item we added is added in the list.
            String enteredText = driver.findElementByXPath("/html/body/div/div/div/ul/li[6]/span").getText();
            if (enteredText.equals("Yey, Let's add it to list")) {
                status = true;
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
  
    @After
    public void tearDown() throws Exception {
       if (driver != null) {
            ((JavascriptExecutor) driver).executeScript("lambda-status=" + status); // relay whether the test has passed or failed as marked by the user
            driver.quit();
        }
    }
}

Вы также можете протестировать свои локальные файлы с помощью Lambda-теста Selenium grid для выполнения автоматического тестирования веб-приложения с помощью JUnit и Selenium. Вы можете сделать это с помощью расширенных возможностей, предоставляемых генератором возможностей лямбда-теста. Эти расширенные возможности помогут вам:

  • Выполните тестирование на ваших локально размещенных веб-страницах.
  • Создавайте журналы консоли браузера для каждого шага, выполняемого в рамках вашего теста.
  • Настройте пользовательский часовой пояс для выполнения теста.
  • Создавайте сетевые журналы во время выполнения теста.

Если мы хотим активировать все вышеупомянутые расширенные возможности, вам необходимо добавить следующие желаемые возможности:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("tunnel",true); // allows you to run tests for your locally hosted web pages.
capabilities.setCapability("console",true); // generates console logs
capabilities.setCapability("network",true); // generates network logs
capabilities.setCapability("timezone","UTC+12");  //considering you want your test to run on the time zone UTC+12.

Параллельное тестирование

Лямбда-тест также предоставляет возможность параллельного выполнения теста. С помощью параллельного тестирования лямбда-теста вы можете выполнить аналогичный тест одновременно в нескольких браузерах. Это помогает значительно сократить время, затрачиваемое на выполнение работ по тестовой сборке. Вот пример параллельного тестирования, выполненного для автоматизации тестирования веб-приложений с помощью JUnit и Selenium с использованием LambdaTest.

Чтобы запустить тест в разных браузерах одновременно, вам нужно будет создать вспомогательный класс, расширяющий параметризованный класс (org.junit.runners. Параметризованный) и реализует класс RunnerScheduler

(org.junit.бегуны.модель.RunnerScheduler) для параллельной поддержки тестов JUnit. Смотрите пример ниже:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
 
import org.junit.runners.Parameterized;
import org.junit.runners.model.RunnerScheduler;
 
public class Parallelized extends Parameterized {
 
    private static class ThreadPoolScheduler implements RunnerScheduler {
        private ExecutorService executor;
 
        public ThreadPoolScheduler() {
            String threads = System.getProperty("junit.parallel.threads", "15");
            int numThreads = Integer.parseInt(threads);
            executor = Executors.newFixedThreadPool(numThreads);
        }
 
        @Override
        public void finished() {
            executor.shutdown();
            try {
                executor.awaitTermination(10, TimeUnit.MINUTES);
            } catch (InterruptedException exc) {
                throw new RuntimeException(exc);
            }
        }
 
        @Override
        public void schedule(Runnable childStatement) {
            executor.submit(childStatement);
        }
    }
 
    public Parallelized(Class> klass) throws Throwable {
        super(klass);
        setScheduler(new ThreadPoolScheduler());
    }
}

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

import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.LinkedList;
 
@RunWith(Parallelized.class)
public class JUnitConcurrentTodo {
     public String username = "YOUR_USERNAME";
    public String accesskey = "YOUR_ACCESS_KEY";
    public String gridURL = "@beta
.lambdatest.com/wd/hub";
 
     public String platform;
     public String browserName;
     public String browserVersion;
 
 
    public RemoteWebDriver driver = null;
 
     boolean status = false;
  
        @Parameterized.Parameters
     public static LinkedList getEnvironments() throws Exception {
        LinkedList env = new LinkedList();
        env.add(new String[]{"WIN10", "chrome", "70.0"});
        env.add(new String[]{"macos 10.12","firefox","62.0"});
        env.add(new String[]{"WIN8","internet explorer","11"});
        return env;
    }
 
 
   public JUnitConcurrentTodo(String platform, String browserName, String browserVersion) {
        this.platform = platform;
        this.browserName = browserName;
        this.browserVersion = browserVersion;
     }
 
    @Before
    public void setUp() throws Exception {
       DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("browserName", browser);
        capabilities.setCapability("version", browserVersion);
        capabilities.setCapability("platform", platform); // If this cap isn't specified, it will just get the any available one
        capabilities.setCapability("build", "JUnitParallelSample");
        capabilities.setCapability("name", "JUnitParallelSampleTest");
        capabilities.setCapability("network", true); // To enable network logs
        capabilities.setCapability("visual", true); // To enable step by step screenshot
        capabilities.setCapability("video", true); // To enable video recording
        capabilities.setCapability("console", true); // To capture console logs
        try {
            driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
        } catch (MalformedURLException e) {
            System.out.println("Invalid grid URL");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
  
    @test

    public void testParallel() throws Exception {
       try {
              //Change it to production page
            driver.get("https://4dvanceboy.github.io/lambdatest/lambdasampleapp.html");
             
              //Let's mark done first two items in the list.
              driver.findElement(By.name("li1")).click();
            driver.findElement(By.name("li2")).click();
             
             // Let's add an item in the list.
              driver.findElement(By.id("sampletodotext")).sendKeys("Yey, Let's add it to list");
            driver.findElement(By.id("addbutton")).click();
             
              // Let's check that the item we added is added in the list.
            String enteredText = driver.findElementByXPath("/html/body/div/div/div/ul/li[6]/span").getText();
            if (enteredText.equals("Yey, Let's add it to list")) {
                status = true;
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
  
    @After
    public void tearDown() throws Exception {
       if (driver != null) {
            ((JavascriptExecutor) driver).executeScript("lambda-status=" + status);
            driver.quit();
        }
    }
}

Тестирование веб-приложений С помощью JUnit и Selenium В Облаке – это Должен

Облачное тестирование означает тестирование облачных приложений, размещенных в облаке. Использование Selenium вместе с JUnit для тестирования облачных сервисов для веб-приложений становится наиболее очевидным выбором из-за его возможностей запускать скрипт в нескольких браузерах и платформах с поддержкой любого языка, который можно выбрать для . Причина делает объединение JUnit и Selenium выгодным выбором для выполнения кросс-браузерного тестирования. Использование JUnit обеспечивает более структурированный способ написания вашего теста, который обеспечивает лучшее обслуживание, качество и эффективность по сравнению с использованием каких-либо фреймворков, таких как JUnit. Лямбда-тест как инструмент кроссбраузерного тестирования может помочь вам значительно сократить время и усилия, затрачиваемые на выполнение автоматизированного тестирования с помощью JUnit и Selenium. Лямбда-тест предлагает сетку Selenium, состоящую из более чем 2000 браузеров, а также поддерживает несколько языков программирования, таких как Javascript, Python, Ruby, C# и PHP. Использование Maven и Jenkins с Selenium и JUnit помогает сделать более мощную, плавную и комплексную автоматизацию облачных приложений, обеспечивая тем самым надежность всего потока . Мы продемонстрируем это в наших следующих статьях, так что следите за обновлениями и приятного тестирования!

Первоисточник: lambdatest.com 4 января 2019 года.

Статьи по теме:

  1. Как Выполнить Автоматизацию Тестирования С Помощью Фреймворка Gauge & Selenium?
  2. 13 Причин, По которым Selenium WebDriver Должен Быть Вашим Первым Выбором для Автоматизированного Тестирования!
  3. Автоматическое Кроссбраузерное Тестирование С Помощью Транспортира и Селена
  4. Использование PyUnit Для Тестирования Набора Тестов Selenium Python

Оригинал: “https://dev.to/lambdatesting/automated-testing-with-junit-and-selenium-for-browser-compatibility-4ndn”