Формулярите са основните уеб елементи за получаване на информация от посетителите на уебсайта. Уеб формулярите имат различни GUI елементи като текстови полета, полета за парола, квадратчета за отметка, радио бутони, падащи менюта, въвеждане на файлове и т.н.
Ще видим как да осъществим достъп до тези различни елементи на формуляра, използвайки Selenium Web Driver с Java. Селенът капсулира всеки елемент на формуляр като обект на WebElement. Той осигурява API за намиране на елементите и предприемане на действия върху тях като въвеждане на текст в текстови полета, щракване върху бутоните и т.н. Ще видим методите, които са достъпни за достъп до всеки елемент на формуляр.
В този урок ще видим как да идентифицираме следните елементи на формуляра
- Въведение в WebElement, findElement (), findElements ()
- Кутия за въвеждане
- Въвеждане на стойности в полетата за въвеждане
- Изтриване на стойности в полетата за въвеждане
- Бутони
- Бутони за изпращане
- Пълен код
- Отстраняване на неизправности
Въведение в WebElement, findElement (), findElements ()
Selenium Web Driver капсулира прост елемент на формуляр като обект на WebElement.
Съществуват различни техники, чрез които WebDriver идентифицира елементите на формуляра въз основа на различните свойства на уеб елементите като ID, Име, Клас, XPath, Име на етикет, CSS селектори, Текст на връзката и т.н.
Web Driver предоставя следните два метода WebElement за намиране на елементите.
- findElement () - намира един уеб елемент и се връща като обект WebElement Selenium.
- findElements () - връща списък с обекти на WebElement, отговарящи на критериите за локатор.
Нека видим кодовите фрагменти, за да получим един елемент - текстово поле в уеб страница като обект на WebElement, използвайки метода findElement (). Ще разгледаме метода findElements () за намиране на множество елементи в следващите уроци.
Стъпка 1: Трябва да импортираме този пакет, за да създадем обекти от уеб елементи
Стъпка 2: Трябва да извикаме метода findElement (), наличен в класа WebDriver, и да получим обект на WebElement.
Вижте по-долу, за да видите как се прави.
Кутия за въвеждане
Полетата за въвеждане се отнасят за всеки от тези два типа:
- Текстови полета - текстови полета за въвеждане на селен, които приемат въведени стойности и ги показват такива, каквито са.
- Полета за парола - текстови полета, които приемат набрани стойности, но ги маскират като поредица от специални знаци (обикновено точки и звездички), за да се избегнат показване на чувствителни стойности.
Локатори
Методът findElement () взема един параметър, който е локатор на елемента. Различни локатори като By.id (), By.name (), By.xpath (), By.CSSSelector () и др. Намират елементите на страницата, използвайки техните свойства като id, име или път, и т.н.
Можете да използвате приставки като Fire path, за да получите помощ за получаване на id, xpath и т.н. на елементите.
Използването на примерния сайт http://demo.guru99.com/test/login.html, даден по-долу, е кодът за намиране на текстовото поле „Адрес на електронната поща“ с помощта на локатора на идентификатори и полето „Парола“ с помощта на локатора на имената.
- Текстовото поле на имейл се намира от Id
- Полето за парола се намира по име
изпращащи клавиши в селен
sendkeys () в Selenium е метод, използван за въвеждане на редактируемо съдържание в полетата за текст и парола по време на изпълнението на теста. Тези полета се идентифицират с помощта на локатори като име, клас, идентификатор и т.н. Това е метод, наличен в уеб елемента. За разлика от метода на типа, методът sendkeys () не замества съществуващия текст във всяко текстово поле.
Въвеждане на стойности в полетата за въвеждане
За да въведете текст в текстовите полета и полетата за парола, sendKeys () е методът, наличен в WebElement в Selenium.
Използвайки същия пример на сайта http://demo.guru99.com/test/login.html, ето как намираме полетата Текст и Парола и въвеждаме текст в Селен.
- Намерете текстовото поле „Имейл адрес“ с помощта на локатора на идентификатори.
- Намерете полето "Парола" с помощта на локатора на имената
- Въведете текст в „Имейл адрес“, като използвате метода на Selenium sendkeys.
- Въведете парола в полето "Парола", като използвате метода sendKeys ().
Изтриване на стойности в полетата за въвеждане
Методът clear () се използва за изтриване на текста в полето за въвеждане. Този метод не се нуждае от параметър . Кодовият фрагмент по-долу ще изчисти текста от полетата Имейл или Парола
Бутони
Бутонът за щракване на Selenium може да бъде достъпен чрез метода click ().
В горния пример
- Намерете бутона за влизане
- Щракнете върху бутона "Вход" в страницата за вход на сайта, за да влезете в сайта.
Бутони за изпращане
Бутоните за изпращане се използват за изпращане на целия формуляр на сървъра. Можем да използваме метода click () върху уеб елемента като обикновен бутон, както направихме по-горе, или да използваме метода submit () за всеки уеб елемент във формуляра или върху самия бутон за изпращане.
Когато се използва submit (), WebDriver ще търси DOM, за да знае към коя форма принадлежи елементът, и след това ще задейства функцията му за изпращане.
Пълен код
Ето пълния работен код
внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.chrome.ChromeDriver;внос org.openqa.selenium. *;формуляр за публичен клас {публична статична void main (String [] args) {// деклариране и инстанциране на обекти / променливиSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Вземете WebElement, съответстващ на имейл адреса (TextField)WebElement имейл = driver.findElement (By.id ("имейл"));// Вземете WebElement, съответстващ на полето за паролаПарола за WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите.");password.sendKeys ("abcdefghlkjl");System.out.println („Набор текстово поле“);// Изтриване на стойности в текстовото полеemail.clear ();password.clear ();System.out.println („Изчистено текстово поле“);// Намерете бутона за изпращанеWebElement login = driver.findElement (By.id ("SubmitLogin"));// Използване на метод за щракване за изпращане на формулярemail.sendKeys (" Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println („Вход свършен с щракване“); // използвайки метод за изпращане, за да изпратите формуляра. Подаване, използвано в полето за парола driver.get (baseUrl); driver.findElement (By.id ("имейл")). sendKeys (" Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Вход свършен с изпращане"); //driver.close (); }}
Отстраняване на неизправности
Ако срещнете NoSuchElementException (), докато намирате елементи, това означава, че елементът не е намерен на страницата в точката, в която уеб драйверът е осъществил достъп до страницата.
- Проверете отново локатора си, като използвате Firepath или Inspect Element в Chrome.
- Проверете дали стойността, която сте използвали в кода, е различна от тази за елемента в Firepath сега.
- Някои свойства са динамични за няколко елемента. В случай, че установите, че стойността е различна и се променя динамично, помислете за използването на By.xpath () или By.cssSelector (), които са по-надеждни, но сложни начини.
- Понякога това може да е и проблем с изчакването, т.е. уеб драйверът е изпълнил вашия код дори преди страницата да се зареди напълно и т.н.
- Добавете изчакване преди findElement (), използвайки неявни или явни изчаквания.
Обобщение
- Таблицата по-долу обобщава командите за достъп до всеки тип елемент, обсъден по-горе
Елемент | Команда | Описание |
---|---|---|
Кутия за въвеждане | sendKeys () | използва се за въвеждане на стойности в текстови полета |
изчисти () | използва се за изчистване на текстовите полета от текущата му стойност | |
Връзки | щракнете () | използва се за щракване върху връзката и изчакване на завършване на зареждането на страницата, преди да преминете към следващата команда. |
Бутон за изпращане | Изпращане() |
- WebDriver позволява избор на повече от една опция в множество SELECT елементи.
- Можете да използвате метода submit () за всеки елемент във формуляра. WebDriver автоматично ще задейства функцията за изпращане на формуляра, към който принадлежи този елемент.