Другите блогове в тази поредица от уроци на Selenium говорят за създаването на тестови случаи и изпълнението им в последователност и паралел. И така, последната техника, оставена за обсъждане, е изпълнение на тестови случаи в отдалечени машини. Selenium Grid може да се използва за изпълнение на тези тестове на отдалечени машини / хостове. Следователно това е темата за обсъждане на днешния блог.
- Защо и кога да използвам Selenium Grid?
- Какво представлява селеновата решетка?
- Селенова решетка 1 срещу селенова решетка 2
- Архитектура на селеновата решетка
- Изграждане на селенова решетка
Защо и кога да използвам селенова решетка?
Има толкова много уеб браузъри, които се използват днес. Потребителите може да използват Chrome или Firefox или Safari или Opera или дори Internet Explorer за четене на този блог. Те може да използват различни версии на браузърите. Те също могат да работят с тези браузъри на всяка операционна система, независимо дали е Windows или Mac или Ubuntu или друга дистрибуция на Linux.
каква е разликата между претоварване и замяна
Ами ако потребителите виждат нещо важно в интернет? Нещо важно за вашия бизнес. Не бихте ли искали да изминете тази допълнителна миля (тестване на уеб приложението), само за да гарантирате, че вашите потребители и / или клиенти получават най-доброто потребителско изживяване? Бихте ли, нали?
Е, трябва!
Но въпросът е доколко е осъществимо? Ще можете ли да отделите време за тестване на вашето уеб приложение на всяка възможна операционна система и всеки наличен уеб браузър? Хм, това звучи като малко предизвикателство. Това е мястото, където Selenium Grid отговаря на сметката и помагаспестете вашето време и енергия.
В допълнение към това възниква още един въпрос, жизнеспособно ли е да се създаде мрежова инфраструктура на Selenium с помощта на локални системи? Поддържането на мрежа с всички необходими браузъри и операционни системи е предизвикателство. За това има множество онлайн платформи, които предоставят онлайн Selenium Grid, до който имате достъп, за да стартирате вашите скриптове за автоматизация на селен. Например можете да използвате LambdaTest . Той има повече от 2000 среди на браузъра, в които можете да стартирате вашите тестове и наистина да автоматизирате тестване на различни браузъри.
Какво представлява селеновата решетка?
Selenium Grid е друг важен инструмент в набора от инструменти Selenium. Grid е способен да координира WebDriver тестове / RC тестове, които могат да се изпълняват едновременно на множество уеб браузъри или могат да бъдат инициирани в различни операционни системи или дори хоствани на различни машини.
И така, как се получава това? Grid използва архитектура Hub-Node, където има един Hub, който действа като главен и един или повече възли, действащи като slave.
Това означава, че ако имате общо 100 задачи / теста, които трябва да бъдат изпълнени, тогава тестовете могат да бъдат изпълнени едновременно в 5 машини, където всяка машина ще изпълнява 20 теста. Всъщност можете да изпълните тези тестове в различни комбинации от операционни системи и браузъри. Всяка машина тук може да бъде с различна операционна система и вътре във всяка операционна система тестовете могат да се извършват на различни браузъри.
Този акт лесно би спестил много от времето ви при изпълнение на теста. Ако разгледате горния пример, тогава можем да намалим времето за изпълнение до около 1/5 от общото време, необходимо за изпълнение на тестове на една машина.
Ако можете да си спомните от предишните ми блогове, споменах безброй пъти, че Grid е част от проекта Selenium от самото му създаване, т.е. от Selenium v1. Selenium Grid също е част от Selenium v2 и в момента е част от Selenium v3. Няма голяма разлика в v2 и v3 на селеновата решетка. Въпреки това, v1 има много разлики сравнително. Некаразберете разликите между v1 и v2.
Селенова решетка 1 срещу селенова решетка 2
Основната разлика между Grid v1.0 и v2.0 е, че RC е използван в Grid 1, а WebDriver е използван в Grid 2. Таблицата по-долу обяснява подробно разликите.
Решетка 1 | Решетка 2 |
Изисква инсталиране на Apache Ant | Не се изисква инсталиране на Apache Ant |
Има собствено дистанционно управление (Това е различно от RC сървъра) | В комплект с jar файл на Selenium Server |
Поддържа само команди Selenium RC | Поддържа скриптове Selenium RC и WebDriver |
Можете да автоматизирате само един браузър на дистанционно управление | Можете да автоматизирате до 5 браузъра на дистанционно управление |
След като научихме основните разлики между двете версии, нека дълбоко се потопим в Selenium Grid.
Архитектура на селеновата решетка
Както споменах по-рано, Grid функционира на базата на един концентратор и множество възли. Но какво представляват Hub и Nodes и какво правят?
Главината
Във всяка настройка на мрежата може да има само един център и това ще бъде централната точка в тази настройка на мрежата. Всички тестове, които трябва да бъдат изпълнени, трябва да бъдат заредени тук. Въпреки тестовете, които се зареждат тук, те ще се изпълняват само в Nodes. Можем да конфигурираме всяка хост машина да бъде наш център и тя ще координира дейностите по изпълнение на теста в други хостове.
За да се случи това, първо трябва да конфигурираме концентратора и след това да направим други възли, които да се регистрират в центъра. Преди да вляза в твърде много подробности, позволете ми да ви покажа командата за конфигуриране на концентратора.
Конфигуриране на концентратора
На първо място трябва да изтеглите JAR файла на сървъра на Selenium от уебсайта на Seleniumhq. Връзката е тук . Също така трябва да се уверите, че Java е инсталирана във вашата система и променливите на средата са зададени.
След като изтеглите файла на jar, трябва да го поставите в подходяща директория. За мое улеснение го изтеглих и го поставих в папката Selenium в C Drive. Препоръчително е също да изтеглите jar файла и да го поставите в подобна директория във всички останали възли.
За да конфигурирате концентратора, трябва да изпълните командата в командния ред на Windows. Командата присъства в фрагмента по-долу.
C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub
The selenium-server-standalone-3.4.0.jar е името на изтегления от мен файл.
The -рола flag се използва за задаване на тази конкретна хост машина като концентратор. Когато натиснете Enter, ще получите изхода по-долу на вашия екран.
В случай, че не сте успели да забележите горната екранна снимка, вижте я отново. Казва ' -Възелите трябва да се регистрират в http://192.168.0.11:4444/grid/register ‘. Сега, когато концентраторът е конфигуриран, трябва да настроим възлите и да ги свържем с този център.
192.168.0.11 е IP адресът на концентратора и всеки възел трябва да се свърже с този IP адрес. 4444 е номерът на порта по подразбиране, на който Selenium Grid се хоства и слуша заявки. Ако на порт 4444 се изпълнява друга услуга и искате Selenium Grid да бъде хостван на друг порт, можете да го направите, като посочите -порт флаг, последван от номера на порта.
Възлите
Възлите са хост машините, на които се изпълняват тестовете. Тези тестове ще бъдат стартирани от Хъба. Хъбът може да стартира един или повече възли или на отдалечени машини, или на същата машина, където се намира самият хъб. На всеки от възлите могат да бъдат стартирани различни операционни системи, а на различни операционни системи могат да бъдат инициирани различни версии на един и същ браузър или различни браузъри.
Конфигуриране на възлите
Подобно на концентратора, първо трябва да изтеглите файла Jar в машините Node и да го поставите на C Drive или друга обща директория за ваше удобство. След това можете да изпълните командата по-долу в командния ред на Windows. Ако стартирате дори Node на същата машина като вашия Hub, тогава трябва да изпълните командата, като стартирате друг команден ред.
java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register
Има само няколко разлики в тази команда в сравнение с командата, необходима за стартиране на концентратора.
-Dwebdriver.chrome.driver = E: chromedriver.exe се използва за задаване на пътя на драйвера на браузъра. Подобно на задаването на пътя на драйвера на браузъра във вашия код на WebDriver, вие го указвате тук, за да позволите на възела да извършва тестове. От Selenium v3 нататък трябва да изтеглите браузъра за драйвери за Firefox. Драйверът на браузъра за Firefox е Gecko драйвер. Във версии 1 и 2 обаче трябва да настроите драйвера на браузъра за всички браузъри, различни от Firefox.
-ролево възел flag се използва за задаване на конкретната хост машина като възел.
-hub http://192.168.0.11:4444/grid/register информира Node да се свърже с Hub, като използва IP адреса на Hub. Важен момент, който трябва да се отбележи е, че ако стартирате който и да е възел на същата машина като вашия хъб, тогава можете да посочите „ -hub http: // localhost: 4444 / мрежа / регистър ‘В командата вместо IP адреса на концентратора.
как да направя мощност в java -
Когато натиснете Enter, ще получите изхода по-долу в командния ред.
До този момент възелът щеше да е свързан с концентратора. Можете да проверите това, като се върнете в командния ред, използван за стартиране на концентратора, и ще забележите следното съобщение: ‘ Регистрира възел http://192.168.0.11:5555 ‘.
IP адресът и номерът на порта са тези на вашия Node. Тъй като имам своя Node на същата машина като моя Hub, портът, използван за Node, е 5555. Когато го стартирате на друга машина, ще се използва портът по подразбиране.
Когато стартирате следния URL в машината на вашия хъб, ще получите състоянието на възлите, свързани към вашия хъб. Вижте маркираната част на екранната снимка по-долу.
Сега, когато вашата Selenium Grid е конфигурирана, можете да продължите към изпълнението на тестови скриптове на Nodes. Позволете ми отново да подчертая, че трябва да стартираме скриптове в нашия хъб и те ще бъдат изпълнени в нашите възли. Скриптът, използван за изпълнение на тестовете, е подобен на WebDriverтестове.
Изграждане на селенова решетка
Стартирах скрипта си в Eclipse IDE. Изпълнението на този скрипт разчита на два важни библиотечни пакета. Те са Желани възможности обект и RemoteWebDriver обект.
DesiredCapabilities се използва за задаване на типа браузър и операционната система на нашия възел. За да импортирате обект DesiredCapabilities, използвайте кода по-долу.
импортиране на org.openqa.selenium.remote.DesiredCapabilities
RemoteWebDriver се използва за избор на възела, на който искаме да изпълним теста. За да импортирате обект RemoteWebDriver, използвайте долните редове код.
import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver
Импортирах тези два пакета заедно с пакета за анотации TestNG за моя скрипт, както е показано в долния кодов фрагмент. Импортирах анотации на TestNG, защото изпълних това като тест на TestNG, за който ще бъде генериран подробен отчет. Бих ви препоръчал да импортирате същия набор от пакети за вашия код.
Когато маневрирате над логата на всеки браузър, присъстващ в конзолата на Selenium Hub, ще получите подробности като browserName и платформа на възела, който искате да автоматизирате. Изображението също така показва колко екземпляра от браузърите мога да отворя в моя Node. Мога да конфигурирам максимум 5 екземпляра на chrome, 5 Firefox и 1 Internet Explorer. Тези подробности са представени на екрана по-долу.
Можете да използвате кода в долния фрагмент, за да настроите първата си мрежа.
пакет GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver публичен клас TestGrid {static WebDriver driver static String nodeUrl @BeforeTestx public void {formedmedURS nodeUrl = 'http://192.168.0.11:5555/wd/hub' DesiredCapabilities functions = DesiredCapabilities.chrome () functions.setBrowserName ('chrome') functions.setPlatform (Platform.WINDOWS) driver = new RemoteWebDriver (нов URL (nodeUrl ), възможности)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}
Разделих целия тестов скрипт на три тестови анотации. @BeforeTest, @Test и @AfterTest. В @BeforeTest използвах обектите DesiredCapablities и RemoteWebDriver, за да конфигурирам моя възел. В @Test помолих Node да отиде до началната страница на Edureka и да утвърди заглавието на страницата. В @AfterTest помолих Node да излезе от екземпляра на браузъра.
Когато тестът ви премине изпълнението, ще получите изхода по-долу.
18 май 2017 г. 15:09:07 ч. Org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Открит диалект: OSS PASSED: simpleTest ===================== ========================== Тест по подразбиране Тестове изпълнени: 1, неуспехи: 0, пропуски: 0 ========== ======================================== ============= ================================== Комплект по подразбиране Общ брой изпълнени тестове: 1, Неуспехи: 0, Пропускания: 0 = ================================================
Тъй като това се изпълнява като тест TestNG, ще получите подробен протокол от теста, подобен на снимката на екрана по-долу.
Ако не знаете какво е TestNG и как да използвате тестови анотации, прочетете блога ми за това как да го използвате Селен WebDriver с TestNG от тази серия уроци по Selenium.
Можете да видите видеото по-долу, за да станете свидетели на демонстрация на това как да изградите решетка от селен. Инструкторът, който предоставя видеото, обяснява същите концепции, обяснени в този блог.
Урок за селенова решетка за начинаещи | Урок за селен | Едурека
И така, това ни води до края на този блог на Selenium Grid. Ако имате някакво съмнение или проблем с някакъв код / съдържание на тази поредица от блогове, моля, оставете ги в раздела за коментари по-долу и аз ще разреша проблема ви най-рано.
Ако искате да научите селен и да изградите кариера в тестващата област, разгледайте нашия интерактивен онлайн на живо тук това идва с поддръжка 24 * 7, която да ви води през целия период на обучение.
Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.