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

Полное Руководство По Доступу К Формам В Selenium С Помощью Java

Узнайте, как получить доступ к формам в Selenium WebDriver для автоматического тестирования вашего веб-приложения в браузере и обеспечения кросс-браузерной совместимости для ваших клиентов. С пометкой “учебник”, “java”, “разработчик”.

Заметили ли вы повсеместное распространение веб-форм во время серфинга в Интернете? Почти каждый веб-сайт или веб-приложение, которые вы посещаете, использует веб-формы для получения соответствующей информации о себе. От создания учетной записи через веб-приложение до заполнения краткого опроса – веб-формы есть везде! Форма содержит веб-элементы, такие как флажок, переключатель, пароль, выпадающий список для сбора пользовательских данных.

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

Эта статья поможет вам понять, как вы можете получить доступ к формам в Selenium для автоматизации тестирования вашего веб-приложения в браузере. Я буду использовать фреймворк JUnit с некоторыми аннотациями для выполнения нашего Selenium automation testing позже в этой статье.

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

Что Такое Веб-Элемент?

На языке непрофессионала все, что присутствует на веб-странице, представляет собой WebElement. Примерами могут быть текстовое поле, переключатель и т.д. Selenium Webdriver предлагает интерфейс, называемый WebElement , который отвечает за все возможные взаимодействия, происходящие на веб-странице. Чтобы найти эти веб-элементы, Selenium WebDriver предоставляет 2 метода, а именно findElement() и findElements().

findElement(): Этот метод используется для поиска одного веб-элемента. Как только элемент найден, он возвращается как объект WebElement. Давайте теперь рассмотрим синтаксис findElement(), но прежде чем мы начнем использовать объект WebElement в нашем тестовом скрипте, нам нужно отметить один очень важный момент.

Нам нужно импортировать приведенный ниже пакет, прежде чем мы сможем начать создавать объекты WebElements:

import org.openqa.selenium.WebElement;

Синтаксис для findElement():

WebElement ele = driver.findElement(By.xpath(---xpath---);

find Elements(): Возвращает список WebElements, соответствующий локатору, определенному в методе. Синтаксис функции find Elements() выглядит так, как показано ниже:

List ele = driver.findElements(By.xpath(---xpath---);

Теперь, когда мы досконально разбираемся в интерфейсе WebElement, а также в разнице между методом findElement() и findElements() в тестировании Selenium automation. Пришло время глубоко погрузиться в эти веб-элементы. Теперь мы перечислим все веб-поля, которые могут быть задействованы в форме вашего веб-сайта или веб-приложения. Затем мы заметим, как получить доступ к формам в Selenium WebDriver.

Типы Полей Для Доступа В Формах С Selenium

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

Поле ввода

Поле ввода является основным элементом в любой форме. Ни одна форма не является полной без ввода пользователем. Он может быть двух типов:

  1. Поле текстового поля – Текстовые поля, в которых отображается значение, введенное пользователем.
  2. Поле для ввода пароля – Текстовые поля, в которых отображаются специальные символы (в основном ‘*’) при вводе значения пользователем.

Вот изображение, представляющее поля ввода внутри формы.

Кнопки

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

Установите Флажок

На большинстве широко используемых веб-сайтов мы видим небольшое окошко, которое позволяет нам установить или снять его. В основном в разделах соглашения, где пользователь должен подтвердить понимание этих политик. Флажок используется для возврата логического значения, если он установлен, то он вернет значение True else вернет значение false.

Переключатель

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

Ссылка

Мы все сталкиваемся с общей проблемой забывания паролей наших учетных записей. Заметили ссылку “Забыли пароль” на экранах? Вот что такое ссылка. Он перенаправляет нас на новую веб-страницу или всплывающее окно нового окна или что-то подобное. Это полностью связывает нас с новым URL-адресом.

Падение Вниз

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

Ниже приведен снимок того, как Facebook использует формы.

Как Создать Веб-Элементы В Форме С Помощью Selenium?

Теперь, когда мы знаем, с какими различными типами веб-элементов мы можем столкнуться в нашем приложении, нам нужно идентифицировать эти веб-элементы с помощью наших сценариев тестирования Selenium automation, и для этого мы используем локаторы Selenium. Локаторы – это параметры, заданные методам findElement() или findElements(), которые помогают извлекать веб-элемент, используя его свойства, такие как идентификатор, имя, класс и т.д. В целом у нас есть 8 локаторов в Selenium, которые широко используются:

  • Идентификатор
  • Имя
  • Имя тега
  • Название класса
  • Текст ссылки
  • Частичный текст ссылки
  • XPath
  • Селектор CSS

Некоторые из примеров таковы:

WebElement eid = driver.findElement(By.id("email");

WebElement pswd = driver.findElement(By.name("password");

WebElement sbmtBtn = driver.findElement(By.xpath("//input[@value="submit"]");

Аналогичным образом мы можем использовать By.class Имя, По. CSS Selector(), By.linktext() и т.д.

Взаимодействие С Веб-Элементами Путем Доступа К Формам В Selenium

Поиск этих веб-элементов – это только половина вашего пути при доступе к формам с помощью тестирования Selenium automation. Теперь перейдем к сути доступа к форме в Selenium. Выполнение действий и взаимодействие с формами с использованием Selenium.! Давайте посмотрим, как различные действия могут быть выполнены с каждым из них.

1. Поле ввода

Чтобы обрабатывать любое поле ввода, мы должны иметь возможность вводить информацию, очищать информацию или получать информацию из поля. Различными методами, которые Selenium предлагает для работы с текстовыми полями, являются:

  • Клавиши отправки()
  • очистить()
  • getText()

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

driver.findElement(By.id("username").sendKeys("abc@gmail.com");

В приведенном выше заявлении идентификатор электронной почты будет указан как abc@gmail.com в текстовое поле, идентификатор которого – имя пользователя. Теперь, чтобы очистить предварительно введенный текст или текст, который вы вводили в последний раз, можно очистить с помощью метода clear() .

driver.findElement(By.id("username").sendKeys("abc@gmail.com");

Третий метод, который можно использовать для текстового поля, – это метод getText() . Он извлечет текст, написанный в текстовом поле, на случай, если нам потребуется проверить какой-либо существующий или введенный текст.

driver.findElement(By.id("username").sendKeys("abc@gmail.com");

Приведенная выше строка кода вернет текст, давайте возьмем текст, введенный первой строкой кода выше, т.е. abc@gmail.com и сохраните его в текстовой переменной name строкового типа. Могут быть случаи, когда текст присутствует в свойстве value. В таком сценарии мы будем использовать метод getAttribute() вместо gettext().

driver.findElement(By.id("username").sendKeys("abc@gmail.com");

2. Кнопки

Мы можем отправить информацию с помощью кнопок. Это можно сделать с помощью действий по щелчку на том же самом. Ниже приведены методы, доступные в selenium для выполнения действий с кнопками.

  1. щелчок()
  2. отправить()

Может показаться, что в обоих методах нет никакой разницы, но очень мелкие детали меняют использование каждого метода. Оба этих метода в конечном итоге отправят данные формы на сервер, но нам нужно понять тип присутствующего веб-элемента. Если тип элемента “отправить” или “кнопка”, метод click() будет работать для обоих, но если тип элемента “отправить”, а кнопка находится внутри

тег, тогда будет работать только submit(). Если какое-либо из условий равно false, то submit() не будет работать. Ниже приведен синтаксис для обоих:

driver.findElement(By.id("submtLogIn").click();

driver.findElement(By.id("submtLogIn").submit()

3. Установите флажок При работе с checkbox мы будем использовать приведенные ниже методы Selenium:

  1. щелчок()
  2. Выбран()

Чтобы выбрать или проверить значение, мы используем метод click(). Он просто меняет состояние с непроверенного на проверенное и наоборот.

driver.findElement(By.id("name")).click();

Теперь, когда мы можем установить/снять флажок, нам, возможно, сначала потребуется узнать состояние флажка, прежде чем выполнять определенное действие с помощью Selenium automation testing. Для получения состояния мы используем метод is Selected(), который возвращает логическое значение. Это означает, что если флажок установлен, мы получим значение True, иначе получим значение False.

boolean state = driver.findElement(By.id("name")).isSelected();

4. Переключатель

Действия, выполняемые с переключателем, аналогичны действиям с флажком, и мы можем использовать те же методы, что и выше, для переключателя.

  1. щелчок()
  2. Выбран()

5. Ссылка

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

  1. щелчок()
  2. getText()

Оба вышеперечисленных метода могут быть использованы аналогичным образом, как указано выше.

6. Выпадающий

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

  • selectByVisibleText(Строка) – Он выбирает опцию путем сравнения видимого текста, в котором сравнивается строковое значение, переданное в методе.
  • selectByIndex(int) – Выбирает опцию на основе индекса в выпадающем меню с целочисленным параметром, переданным в качестве индекса.
  • selectByValue(Строка) – Выбирает параметр, основанный на значении параметра в строковом формате

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

  • Отменить выбор видимого текста(строка)
  • Отменить выбор byindex(int)
  • Отменить выбор значения(Строка)
  • Отменить выбор всех() – Это отменит выбор всех параметров, выбранных из выпадающего списка.

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

Select se=new Select(driver.findElement(By.id("nation")));  se.selectByValue("Ind");

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

  • getAllSelectedOptions() – Мы можем столкнуться с выпадающими списками, в которых мы можем выбрать несколько вариантов. Теперь, чтобы получить список всех выбранных опций, мы можем использовать этот метод.
  • getFirstSelectedOption() – Этот метод вернет первый вариант, который был выбран из выпадающего списка, и, в отличие от описанного выше метода, он вернет один веб-элемент, а не список.
  • GetOptions()- Этот метод позволил бы нам получить список всех доступных опций в выпадающем списке.
  • is Multiple() – Чтобы проверить, может ли выпадающий список принимать несколько вариантов, мы можем использовать
  • это метод Multiple(), который возвращает логическое значение.

Чтобы получить список опций, мы можем написать наш фрагмент кода, сославшись на объект списка:

Select se=new Select(driver.findElement(By.id("nation")));  
List list=se.getOptions();

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

Обработка элементов формы с помощью Selenium WebDriver

Теперь мы автоматизируем функцию регистрации на Facebook для доступа к форме в Selenium, выполняя действия с веб-элементами. Вот тестовый скрипт для доступа к формам в Selenium с помощью Java с использованием JUnit framework.

//Complete code to run the test of facebook sign up

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.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;

public class TestForms {

    static WebDriver driver;

    @BeforeClass
    public static void setUp(){
            System.out.println("-----This is the beginning of our test !!!-----");
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\admin\\Downloads\\chromedriver_win32(1)\\chromedriver.exe");
            driver = new ChromeDriver();
            driver.manage().window().maximize();
            driver.get("https://facebook.com");
    }

    @Test
    public void fillForm(){
            System.out.println("-----Let us start the sign up process!!!-----");
            /*
             * Handling text boxes to enter and clear values
             */
            WebElement fName = driver.findElement(By.xpath("//input[@name='firstname']"));
            fName.sendKeys("--Enter you name here--");
            WebElement lName = driver.findElement(By.xpath("//input[@name='lastname']"));
            lName.sendKeys("--Enter your last name--");
            //Clear the textbox
            lName.clear();
            lName.sendKeys("XYZ");
            WebElement eMail = driver.findElement(By.xpath("//input[@name='reg_email__']"));
            eMail.sendKeys("--Enter mail or contact number--");
            WebElement pwd = driver.findElement(By.xpath("//input[@name='reg_passwd__']"));
            pwd.sendKeys("--Enter a valid password here--");
            /*
             * Handling dropdown to select date of birth
             */
            Select date = new Select(driver.findElement(By.xpath("(id('day'))")));
            date.selectByVisibleText("15");
            Select month = new Select(driver.findElement(By.xpath("(id('month'))")));
            month.selectByVisibleText("Jan");
            Select year = new Select(driver.findElement(By.xpath("(id('year'))")));
            year.selectByVisibleText("1990");

            /*
             * Handling Radio buttons to select gender
             */
        driver.findElement(By.className("_58mt")).click();

            /*
             * Handling the Sign Up button to perform click action
             */

            WebElement sgnUp = driver.findElement(By.xpath("//button[@id='u_0_13']"));
            sgnUp.click();
    }
    @AfterClass
    public static void tearDown(){
            System.out.println("-----We're now closing the session...-----");
            driver.quit();
    }
} 

Запустив приведенный выше скрипт, вы сможете получить доступ к формам в Selenium с помощью JUnit. Если вы, ребята, не знакомы с JUnit. Вот полное руководство по запуску вашего первого сценария тестирования Selenium automation с помощью JUnit.

Мысли О Масштабируемости Для Более Быстрого Цикла Тестирования?

Хорошо проделанная работа! Однако, если вы хотите получить доступ к формам в Selenium для своего веб-приложения, то, скорее всего, ваши наборы тестов будут больше и сложнее. Вам нужно будет получить доступ к формам в Selenium в сотнях браузеров и операционных систем. Интересно, почему?

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

Что возвращает нас к главному вопросу! Как вы получаете доступ к формам в Selenium WebDriver более чем в сотне браузеров + ОС?

Ну, для начала вы можете пойти дальше и настроить Selenium Grid внутри компании. Однако, если у вас есть больший набор тестов и обширные требования к тестированию, вам, возможно, придется потратить значительную сумму денег и времени, чтобы масштабировать собственную сетку Selenium. Вам нужно будет продолжать добавлять последние версии устройств, браузеров, операционных систем, которые запускаются в вашу сетку Selenium. Учитывая внедрение Agile, Kanban и других современных Sdlc (Жизненные циклы разработки программного обеспечения), основные поставщики браузеров, операционных систем запускают новую версию каждый месяц.

Sdlc (Жизненные циклы разработки программного обеспечения), основные поставщики браузеров, операционных систем запускают новую версию каждый месяц.

К счастью, есть более разумный способ! Выполните тестирование автоматизации Selenium в облаке с помощью Lambda-теста.

Что Такое Лямбда-Тест?

С более чем 150 000 счастливыми клиентами LambdaTest – это облако для кросс-браузерного тестирования, предлагающее онлайн-сетку Selenium из более чем 2000 реальных браузеров, работающих в реальных операционных системах. С помощью лямбда-теста вы можете забыть о хлопотах, связанных с обслуживанием собственной сетки Selenium. Мы предоставляем онлайн-инфраструктуру с нулевым временем простоя. Вы также можете использовать параллельное тестирование с помощью Selenium Grid.

Помимо этого, мы предлагаем:

  • Интеграция с многочисленными сторонними инструментами для CI/CD, управления проектами, отслеживания ошибок, обмена мгновенными сообщениями, бескодовой автоматизации и многого другого.
  • Selenium DesiredCapabilities Generator поможет вам легко объявить класс возможностей в ваших сценариях тестирования Selenium automation.
  • Откройте Selenium API, который поможет вам мгновенно извлекать отчеты о выполнении вашего теста с помощью лямбда-теста.

Теперь мы запустим тот же сценарий тестирования Selenium automation поверх лямбда-теста, но параллельно.

Формы Доступа В Selenium Grid В Облаке

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

  • Вместо вызова обычного FirefoxDriver нам придется использовать RemoteWebDriver вместе с возможностями, связанными с браузером, его версией, операционной системой и т.д.

Поскольку мы уже создали наш скрипт локально, мы будем использовать Selenium Генератор желаемых возможностей в котором, просто предоставляя некоторые детали, такие как ОС, разрешение, браузер (и его версия), версия selenium, местоположение и т.д., Этот генератор предоставит нам несколько строк кода, которые будут выглядеть как показано ниже на основе наших выборов.

  • Теперь нам просто нужно объявить учетные данные проверки подлинности лямбда-теста в сценариях тестирования Selenium automation. Таким образом, WebDriver будет знать правильный URL-адрес концентратора, к которому ему необходимо обратиться. Ниже приведен окончательный сценарий, который мы будем использовать для запуска наших тестов на лямбда-тесте. Выделены изменения в нашем существующем скрипте.
import java.net.MalformedURLException;
import java.net.URL;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.Select;

public class TestForms {

    static String username = "Your UserName";
    static String accesskey = "Your Access Key";
    static RemoteWebDriver driver = null;
    static String gridURL = "@hub.lambdatest.com/wd/hub";
    boolean status = false;

    @BeforeClass
    public static void setUp(){
            System.out.println("-----This is the beginning of our test !!!-----");
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("build", "TestFormsV1.0");
            capabilities.setCapability("name", "SeleniumForms");
        capabilities.setCapability("platform", "Windows 10");
        capabilities.setCapability("browserName", "Chrome");
        capabilities.setCapability("version","79.0");
        capabilities.setCapability("selenium_version","3.13.0");
        capabilities.setCapability("geoLocation","IN");
        capabilities.setCapability("chrome.driver","78.0");

            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());
             }
            driver.manage().window().maximize();
    }

    @Test
    public void fillForm(){
            driver.get("https://facebook.com");
            System.out.println("-----Let us start the sign up process!!!-----");
            /*
             * Handling text boxes to enter and clear values
             */
            WebElement fName = driver.findElement(By.xpath("//input[@name='firstname']"));
            fName.sendKeys("--Enter you name here--");
            WebElement lName = driver.findElement(By.xpath("//input[@name='lastname']"));
            lName.sendKeys("--Enter your last name--");
            //Clear the textbox
            lName.clear();
            lName.sendKeys("XYZ");
            WebElement eMail = driver.findElement(By.xpath("//input[@name='reg_email__']"));
            eMail.sendKeys("--Enter mail or contact number--");
            WebElement pwd = driver.findElement(By.xpath("//input[@name='reg_passwd__']"));
            pwd.sendKeys("--Enter a valid password here--");
            /*
             * Handling dropdown to select date of birth
             */
            Select date = new Select(driver.findElement(By.xpath("(id('day'))")));
            date.selectByVisibleText("15");
            Select month = new Select(driver.findElement(By.xpath("(id('month'))")));
            month.selectByVisibleText("Jan");
            Select year = new Select(driver.findElement(By.xpath("(id('year'))")));
            year.selectByVisibleText("1990");

            /*
             * Handling Radio buttons to select gender
             */
        driver.findElement(By.className("_58mt")).click();

            /*
             * Handling the Sign Up button to perform click action
             */

            WebElement sgnUp = driver.findElement(By.xpath("//button[@id='u_0_13']"));
        sgnUp.click();
    }
    @AfterClass
    public static void tearDown(){
            System.out.println("-----We're now closing the session...-----");
            driver.quit();
    }
}

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

Класс Контейнера тестового Скрипта-

Приведенный ниже код будет содержать основной тестовый скрипт, который мы намерены выполнить. Это похоже на то, что было написано выше, с некоторыми незначительными изменениями в переменных. В этом примере показано выполнение в 3 разных браузерах. Вы можете изменить свой сценарий в зависимости от ваших требований к выполнению.

import java.net.MalformedURLException;
import java.net.URL;
import java.util.LinkedList;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.Select;

@RunWith(ParallelHelper.class)
public class TestForms {

    static String username = "Your User Name";
    static String accesskey = "Your Access Key";
    static RemoteWebDriver driver = null;
    static String gridURL = "@hub.lambdatest.com/wd/hub";
    public static String platform;
    public static String browserName;
    public static String browserVersion; 
    boolean status = false;

    /*
     * Creating parameters for the browsers to be used
     */
    @Parameterized.Parameters
    public static LinkedList getEnvironments() throws Exception {
    LinkedList env = new LinkedList();
    env.add(new String[]{"WIN10", "chrome", "79.0"});
    env.add(new String[]{"WIN10","firefox","71.0"});
    env.add(new String[]{"WIN10","internet explorer","11.0"});
    return env;
   }

    public TestForms(String platform, String browserName, String browserVersion) {
        this.platform = platform;
        this.browserName = browserName;
        this.browserVersion = browserVersion;
    }

    @Before
    public void setUp() {
            System.out.println("-----This is the beginning of our test !!!-----");
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("build", "TestFormsV1.0");  //Can provide you Build Name
            capabilities.setCapability("name", "SeleniumForms");  //Provide your Test Name
        capabilities.setCapability("platform", platform);       //Would pass the OS to  be invoked
        capabilities.setCapability("browserName", browserName); //Would pass the Browser name to be invoked
            capabilities.setCapability("version", browserVersion);  //Would pass the Browser Version to be invoked
        capabilities.setCapability("selenium_version", "3.13.0");
        capabilities.setCapability("geoLocation", "IN");

            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());
            }
    }

    /*
     * This is our main test script
     */
    @Test
    public void fillForm() {
            driver.get("https://facebook.com");
            driver.manage().window().maximize();
            System.out.println("-----Let us start the sign up process!!!-----");
            /*
             * Handling text boxes to enter and clear values
             */
            WebElement fName = driver.findElement(By.xpath("//input[@name='firstname']"));
            fName.sendKeys("--Enter you name here--");
            WebElement lName = driver.findElement(By.xpath("//input[@name='lastname']"));
            lName.sendKeys("--Enter your last name--");
            // Clear the textbox
            lName.clear();
            lName.sendKeys("XYZ");
            WebElement eMail = driver.findElement(By.xpath("//input[@name='reg_email__']"));
            eMail.sendKeys("--Enter mail or contact number--");
            WebElement pwd = driver.findElement(By.xpath("//input[@name='reg_passwd__']"));
            pwd.sendKeys("--Enter a valid password here--");
            /*
             * Handling dropdown to select date of birth
             */
            Select date = new Select(driver.findElement(By.xpath("(id('day'))")));
            date.selectByVisibleText("15");
            Select month = new Select(driver.findElement(By.xpath("(id('month'))")));
            month.selectByVisibleText("Jan");
            Select year = new Select(driver.findElement(By.xpath("(id('year'))")));
            year.selectByVisibleText("1990");

            /*
             * Handling Radio buttons to select gender
             */
        driver.findElement(By.className("_58mt")).click();

            /*
             * Handling the Sign Up button to perform click action
             */

            WebElement sgnUp = driver.findElement(By.xpath("//button[@id='u_0_13']"));
            sgnUp.click();
    }

    @After
    public void tearDown() {
            System.out.println("-----We're now closing the session...-----");
            driver.quit();
    }
}

Класс Помощника/Бегуна тестового скрипта

Этот класс содержит код, который позволил бы параллельное выполнение теста в разных браузерах.

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 ParallelHelper extends Parameterized {

    private static class ThreadPoolScheduler implements RunnerScheduler {
        private ExecutorService exec; 
        public ThreadPoolScheduler() {
            String threads = System.getProperty("junit.parallel.threads", "10");
            int numThreads = Integer.parseInt(threads);
            exec= Executors.newFixedThreadPool(numThreads);
        }

        public void finished() {
            exec.shutdown();
            try {
                exec.awaitTermination(10, TimeUnit.MINUTES);
            } catch (InterruptedException exc) {
                throw new RuntimeException(exc);
            }
        }

        public void schedule(Runnable childStatement) {
            exec.submit(childStatement);
        }
    }



    public ParallelHelper(Class klass) throws Throwable {
            super(klass);
            // TODO Auto-generated constructor stub
    }
}

При запуске вышеупомянутого класса мы увидим, что наш тест выполняется в облаке лямбда-тестов и генерируются результаты теста. Обратите внимание, что вы можете видеть прогресс в вашей среде разработки Eclipse IDE, а затем результаты (например, видео выполнения) доступны на панели автоматизации тестирования Lambda. Ниже приведен снимок того, как будут выглядеть результаты выполнения в панели мониторинга лямбда-тестов:

Консоль Eclipse IDE и результаты, с другой стороны, будут отображаться как показано ниже:

Были Ли Вы В Состоянии Для Доступа К Формам В Selenium WebDriver?

Я надеюсь, что этот учебник по Selenium Java помог вам получить доступ к формам в Selenium WebDriver. Помните, что формы имеют основополагающее значение для любого бизнеса, работающего в Интернете. Почти каждое веб-приложение собирает информацию о пользователе с помощью форм. Как тестировщик автоматизации, вам необходимо обеспечить две вещи:

  1. Все ваши формы функционально работают так, как должны.
  2. Все ваши формы совместимы с несколькими браузерами, поэтому к ним имеет доступ каждый клиент.

Если вы не уверены в том, что формы используются в вашем веб-приложении, вы можете пойти дальше и использовать онлайн-сетку Selenium, такую как LambdaTest. Ваши первые 100 минут тестирования автоматизации абсолютно бесплатны, а также пожизненный бесплатный доступ к нашему инструменту кроссбраузерного тестирования. Используйте параллельное тестирование, чтобы гарантировать, что все ваши циклы тестирования будут выполнены вовремя. Счастливого тестирования!

Оригинал: “https://dev.to/ad/complete-guide-to-access-forms-in-selenium-with-java-3gj3”