Како пронаћи све / прекинуте везе помоћу програма Селениум Вебдривер

Преглед садржаја:

Anonim

Шта су прекинуте везе?

Прекинуте везе су везе или УРЛ адресе до којих није могуће доћи. Можда су неисправни или не функционишу због неке грешке сервера

УРЛ ће увек имати статус са 2кк који је важећи. Постоје различити ХТТП кодови статуса који имају различите сврхе. За неважећи захтев, ХТТП статус је 4кк и 5кк.

4кк класа статусног кода углавном се односи на грешку на страни клијента, а 5кк класа статусних кодова је углавном на грешци одговора сервера.

Највероватније нећемо моћи да потврдимо да ли та веза функционише или не док је не кликнемо и потврдимо.

Зашто би требало да проверите Неисправне везе?

Увек треба да будете сигурни да на веб локацији нема неисправних веза јер корисник не би требало да дође на страницу са грешком.

До грешке долази ако се правила не ажурирају правилно или тражени ресурси не постоје на серверу.

Ручна провера веза је досадан задатак, јер свака веб страница може имати велики број веза, а ручни поступак се мора поновити за све странице.

Скрипта за аутоматизацију која користи Селениум која ће аутоматизовати процес прикладније је решење.

Како проверити прекинуте везе и слике

Да бисте проверили неисправне везе, мораћете да урадите следеће кораке.

  1. Прикупите све везе на веб страници на основу <а> ознаке.
  2. Пошаљите ХТТП захтев за везу и прочитајте ХТТП код одговора.
  3. Сазнајте на основу ХТТП кода одговора да ли је веза важећа или прекинута.
  4. Поновите ово за све ухваћене везе.

Шифра за проналажење прекинутих веза на веб страници

Испод је код веб управљачког програма који тестира наш случај употребе:

пакет аутоматионПрацтице;импорт јава.ио.ИОЕкцептион;импорт јава.нет.ХттпУРЛЦоннецтион;импорт јава.нет.МалформедУРЛЕкцептион;импорт јава.нет.УРЛ;импорт јава.утил.Итератор;импорт јава.утил.Лист;импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;јавни разред БрокенЛинкс {приватни статички управљачки програм ВебДривер = нулл;јавна статичка воид главна (Стринг [] аргс) {// ТОДО Аутоматски генерисани квар методеСтринг хомеПаге = "хттп://ввв.злти.цом";Стринг урл = "";ХттпУРЛЦоннецтион хуц = нулл;инт респЦоде = 200;дривер = нови ЦхромеДривер ();дривер.манаге (). виндов (). макимизе ();дривер.гет (хомеПаге);Листа <ВебЕлемент> везе = дривер.финдЕлементс (Би.тагНаме ("а"));Итератор <ВебЕлемент> ит = линкс.итератор ();вхиле (ит.хасНект ()) {урл = ит.нект (). гетАттрибуте ("хреф");Систем.оут.принтлн (урл);иф (урл == нулл || урл.исЕмпти ()) {Систем.оут.принтлн („УРЛ или није конфигурисан за ознаку сидра или је празан“);Настави;}иф (! урл.стартсВитх (хомеПаге)) {Систем.оут.принтлн („УРЛ припада другој домени, прескачући је.“);Настави;}покушати {хуц = (ХттпУРЛЦоннецтион) (нови УРЛ (урл) .опенЦоннецтион ());хуц.сетРекуестМетход ("ГЛАВА");хуц.цоннецт ();респЦоде = хуц.гетРеспонсеЦоде ();иф (респЦоде> = 400) {Систем.оут.принтлн (урл + "неисправна веза");}елсе {Систем.оут.принтлн (урл + "је важећа веза");}} цатцх (МалформедУРЛЕкцептион е) {// ТОДО Аутоматски генерисани блок уловае.принтСтацкТраце ();} цатцх (ИОЕкцептион е) {// ТОДО Аутоматски генерисани блок уловае.принтСтацкТраце ();}}дривер.куит ();}}

Објашњење кода Пример

Корак 1: Увоз пакета

Увоз доњег пакета уз задате пакете:

импорт јава.нет.ХттпУРЛЦоннецтион;

Користећи методе из овог пакета, можемо послати ХТТП захтеве и из одговора ухватити ХТТП кодове одговора.

Корак 2: Прикупите све везе на веб страници

Идентификујте све везе на веб страници и похраните их на Листу.

Листа <ВебЕлемент> везе = дривер.финдЕлементс (Би.тагНаме ("а"));

Набавите Итератор за прелазак кроз Списак.

Итератор <ВебЕлемент> ит = линкс.итератор ();

Корак 3: Идентификовање и потврђивање УРЛ адресе

У овом делу ћемо проверити да ли УРЛ припада домену треће стране или је УРЛ празан / ништаван.

Набавите хреф сидрене ознаке и сачувајте је у променљивој урл.

урл = ит.нект (). гетАттрибуте ("хреф");

Проверите да ли је УРЛ празан или празан и прескочите преостале кораке ако је услов задовољен.

иф (урл == нулл || урл.исЕмпти ()) {Систем.оут.принтлн („УРЛ или није конфигурисан за ознаку сидра или је празан“);Настави;}

Проверите да ли УРЛ припада главној домени или трећој страни. Прескочите преостале кораке ако припада домини треће стране.

 иф (! урл.стартсВитх (хомеПаге)) {Систем.оут.принтлн („УРЛ припада другој домени, прескачући је.“);Настави;}

Корак 4: Пошаљите хттп захтев

Класа ХттпУРЛЦоннецтион има методе за слање ХТТП захтева и хватање ХТТП кода одговора. Дакле, излаз методе опенЦоннецтион () (УРЛЦоннецтион) је уливен у ХттпУРЛЦоннецтион.

хуц = (ХттпУРЛЦоннецтион) (нови УРЛ (урл) .опенЦоннецтион ());

Тип захтева можемо поставити као „ХЕАД“ уместо „ГЕТ“. Тако да се враћају само заглавља, а не тело документа.

хуц.сетРекуестМетход ("ГЛАВА");

На позивање методе цоннецт () успоставља се стварна веза са урл-ом и захтев се шаље.

хуц.цоннецт ();

Корак 5: Провера ваљаности веза

Коришћењем методе гетРеспонсеЦоде () можемо добити код одговора на захтев

респЦоде = хуц.гетРеспонсеЦоде ();

На основу кода одговора покушаћемо да проверимо статус везе.

иф (респЦоде> = 400) {Систем.оут.принтлн (урл + "неисправна веза");}елсе {Систем.оут.принтлн (урл + "је важећа веза");}

Тако можемо добити све везе са веб странице и исписати да ли су везе важеће или неисправне.

Надам се да ће вам овај водич помоћи у проверавању прекинутих веза помоћу селена.

Како доћи до СВИХ веза до веб странице

Један од уобичајених поступака у веб тестирању је тестирање да ли све везе присутне на страници раде. То се лако може урадити коришћењем комбинације Јава-а за сваку петљу , финдЕлементс () и Би.тагНаме ("а") методе.

Метода финдЕлементс () враћа листу Веб елемената са ознаком а. Коришћењем петље за сваку приступа се сваком елементу.

Код ВебДривер доле проверава сваку везу са почетне странице Мерцури Тоурс-а да би утврдио оне који раде и оне који су још увек у фази израде.

импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;импорт јава.утил.Лист;импорт јава.утил.цонцуррент.ТимеУнит;импорт орг.опенка.селениум. *;јавна класа П1 {јавна статичка воид главна (Стринг [] аргс) {Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Систем.сетПроперти ("вебдривер.цхроме.дривер", "Г: \\ цхромедривер.еке");Управљачки програм за ВебДривер = нови ЦхромеДривер ();Стринг ундерЦонсТитле = "У изради: Мерцури Тоурс";дривер.манаге (). тимеоутс (). имплицитноВаит (5, ТимеУнит.СЕЦОНДС);дривер.гет (басеУрл);Листа <ВебЕлемент> линкЕлементс = дривер.финдЕлементс (Би.тагНаме ("а"));Стринг [] линкТектс = нови Стринг [линкЕлементс.сизе ()];инт и = 0;// издвајање текстова веза сваког елемента везеза (ВебЕлемент е: линкЕлементс) {линкТектс [и] = е.гетТект ();и ++;}// тестирај сваку везуфор (Стринг т: линкТектс) {дривер.финдЕлемент (Би.линкТект (т)). цлицк ();иф (дривер.гетТитле (). једнако (ундерЦонсТитле)) {Систем.оут.принтлн ("\" "+ т +" \ ""+ "је у изради.");} остало {Систем.оут.принтлн ("\" "+ т +" \ ""+ "ради.");}дривер.навигате (). бацк ();}дривер.куит ();}}

Излаз би требао бити сличан ономе доле наведеном.

  • Приступ везама до слика врши се методама Би.цссСелецтор () и Би.кпатх ().
  • Решавање проблема

    У изолованом случају, прва веза којој код приступа може бити веза „Почетна”. У том случају, акција дривер.навигате.бацк () приказаће празну страницу док прва акција отвара прегледач. Возач неће моћи да пронађе све остале везе у празном прегледачу. Дакле, ИДЕ ће избацити изузетак, а остатак кода се неће извршити. Ово се лако може решити помоћу петље Иф.