Постоје две врсте ХТМЛ табела објављене на Интернету-
- Статичке табеле : Подаци су статични, тј. Број редова и колона је фиксиран.
- Динамичке табеле : Подаци су динамични, тј. Број редова и ступаца НИЈЕ фиксиран.
Сада ћемо научити како се рукује динамичном табелом у селенијуму:
Испод је пример динамичке веб табеле у програму Селениум за продају. На основу филтера за датум уноса, број редова ће се променити. Дакле, динамичне је природе.
Руковање статичном табелом је једноставно, али руковање динамичким табелама у Селенију је мало тешко јер редови и колоне нису стални.
У овом упутству ћете научити-
- Коришћење Кс-Патх за лоцирање елемената веб табеле
- Пример: Дохватајте број редова и колона из Динамиц ВебТабле
- Пример: Дохвата вредност ћелије одређеног реда и колоне динамичке табеле
- Пример: Добијте максимум свих вредности у колони динамичке табеле
- Пример: Добијте све вредности динамичке табеле
Коришћење Кс-Патх за лоцирање елемената веб табеле
Пре него што лоцирамо веб елемент, прво да схватимо-
Шта је веб елемент?
Веб елементи нису ништа друго до ХТМЛ елементи попут текстуалног оквира, падајућих радио дугмади, дугмади за слање итд. Ови ХТМЛ елементи написани су са почетном ознаком, а завршавају са завршном ознаком.
На пример,
<п> Мој први ХТМЛ документ п>.
Кораци за добијање Кс-путање веб елемента који желимо да лоцирамо.
1. корак) У Цхроме-у идите на хттп://демо.гуру99.цом/тест/веб-табле-елемент.пхп
Корак 2) Кликните десним тастером миша на веб елемент чији ће к пут бити преузет. У нашем случају кликните десним тастером миша на „Компанија“ Изаберите опцију Инспецт. Приказаће се следећи екран -
Корак 3) Кликните десним тастером на истакнути веб елемент> Изаберите Копирај -> Копирај опцију к-патх.
Корак 4) Користите копирану Кс-путању "// * [@ ид =" лефтцонтаинер "] / табле / тхеад / тр / тх [1]" у програму Селениум ВебДривер да бисте пронашли елемент.
Пример: Дохватајте број редова и колона из Динамиц ВебТабле
Иако је динамично руковање веб табелом у програму Селениум не можемо предвидети број редова и колона.
Коришћењем управљачког програма Селениум можемо пронаћи
- Број редова и колона веб табеле у селенијуму
- Подаци о Кс реду или И колони.
Испод је програм за преузимање укупног броја редова и колона за руковање веб табелом у Селенију:
импорт јава.тект.ПарсеЕкцептион;импорт јава.утил.Лист;импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;јавна класа Ноофровсандцолс {публиц статиц воид маин (Стринг [] аргс) баца ПарсеЕкцептион {ВебДривер вд;Систем.сетПроперти ("вебдривер.цхроме.дривер", "Г: //цхромедривер.еке");вд = нови ЦхромеДривер ();вд.гет ("хттп://демо.гуру99.цом/тест/веб-табле-елемент.пхп");//Број колонаЛистацол = вд.финдЕлементс (Би.кпатх (".//*[@ ид = \" лефтцонтаинер \ "] / табле / тхеад / тр / тх"));Систем.оут.принтлн ("Број колона је: + цол.сизе ());//Број редоваЛиста редови = вд.финдЕлементс (Би.кпатх (".//*[@ ид = 'лефтцонтаинер'] / табле / тбоди / тр / тд [1]")); Систем.оут.принтлн ("Број редова је: + редови.сизе ()); вд.цлосе (); }}
Објашњење кода:
- Овде смо прво прогласили објекат веб управљачког програма „вд“ и иницијализовали га у цхроме дривер.
- Лист <ВебЕлемент> користимо за укупан број колона у "цол".
- финдЕлементс наредбе враћају списак СВИХ елемената који се подударају са наведеним локатором
- користећи финдЕлементс и Кс-патх // * [@ ид = \ "лефтцонтаинер \"] / табле / тхеад / тр / тх добијамо све колоне
- Слично томе, понављамо поступак за редове.
Излаз:
Пример: Дохвата вредност ћелије одређеног реда и колоне динамичке табеле
Претпоставимо да су нам потребни 3. ред табеле и подаци њене друге ћелије. Погледајте доњу табелу-
У горњој табели подаци се редовно ажурирају након одређеног временског периода. Подаци које покушате да преузмете ће се разликовати од горњег снимка екрана. Међутим, код остаје исти. Ево примера програма за добијање података 3. реда и 2. колоне.
импорт јава.тект.ПарсеЕкцептион;импорт јава.утил.Лист;импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;импорт јава.утил.цонцуррент.ТимеУнит;јавни разред РовандЦелл {публиц статиц воид маин (Стринг [] аргс) баца ПарсеЕкцептион {ВебДривер вд;Систем.сетПроперти ("вебдривер.цхроме.дривер", "Г: //цхромедривер.еке");вд = нови ЦхромеДривер ();вд.гет ("хттп://демо.гуру99.цом/тест/веб-табле-елемент.пхп");вд.манаге (). тимеоутс (). имплицитноВаит (20, ТимеУнит.СЕЦОНДС);ВебЕлемент басеТабле = вд.финдЕлемент (Би.тагНаме ("табле"));// За проналажење трећег реда табелеВебЕлемент таблеРов = басеТабле.финдЕлемент (Би.кпатх ("// * [@ ид = \" лефтцонтаинер \ "] / табле / тбоди / тр [3]"));Низ ровтект = таблеРов.гетТект ();Систем.оут.принтлн ("Трећи ред табеле: + редтекст);// за добијање података из 2. колоне 3. редаВебЕлемент целлИнеед = таблеРов.финдЕлемент (Би.кпатх ("// * [@ ид = \" лефтцонтаинер \ "] / табле / тбоди / тр [3] / тд [2]"));Стринг валуеИнеед = целлИнеед.гетТект ();Систем.оут.принтлн ("Вредност ћелије је: + валуеИнеед);вд.цлосе ();}}
Објашњење кода:
- Табела се налази помоћу својства локатора "тагнаме".
- Користећи КСПатх "// * [@ ид = \" лефтцонтаинер \ "] / табле / тбоди / тр [3]" пронађите 3. ред и добијате његов текст помоћу функције гетТект ()
- Користећи Кспатх "// * [@ ид = \" лефтцонтаинер \ "] / табле / тбоди / тр [3] / тд [2]“ пронађите 2. ћелију у 3. реду и добијате њен текст помоћу функције гетТект ()
Излаз :
Пример: Добијте максимум свих вредности у колони динамичке табеле
У овом примеру ћемо добити максимум свих вредности у одређеној колони.
Погледајте следећу табелу -
Ево шифре
импорт јава.тект.ПарсеЕкцептион;импорт јава.утил.Лист;импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;импорт јава.тект.НумберФормат;јавна класа МакФромТабле {публиц статиц воид маин (Стринг [] аргс) баца ПарсеЕкцептион {ВебДривер вд;Систем.сетПроперти ("вебдривер.цхроме.дривер", "Г: //цхромедривер.еке");вд = нови ЦхромеДривер ();вд.гет ("хттп://демо.гуру99.цом/тест/веб-табле-елемент.пхп");Стринг мак;двоструко м = 0, р = 0;//Не. колонаЛистацол = вд.финдЕлементс (Би.кпатх (".//*[@ ид = 'лефтцонтаинер'] / табле / тхеад / тр / тх"));Систем.оут.принтлн ("Укупан број колона је: + цол.сизе ());//Број редоваЛиста редови = вд.финдЕлементс (Би.кпатх (".//*[@ид='лефтцонтаинер']/табле/тбоди/тр/тд[1]")); Систем.оут.принтлн ("Укупан број редова је: + ров.сизе ()); фор (инт и = 1; и <ров.сизе (); и ++) {мак = вд.финдЕлемент (Би.кпатх ("хтмл / боди / див [1] / див [5] / табле / тбоди / тр [" + (и + 1) + "] / тд [4]")). гетТект (); НумберФормат ф = НумберФормат.гетНумберИнстанце (); Број нум = ф.парсе (мак); мак = нум.тоСтринг (); м = Доубле.парсеДоубле (мак); ако је (м> р) {р = м; }} Систем.оут.принтлн ("Максимална тренутна цена је: + р); }}
Објашњење кода:
- Помоћу цхроме управљачког програма проналазимо веб табелу и добијамо укупан број редова помоћу КСПатх-а ".//*[@ид='лефтцонтаинер']/табле/тбоди/тр/тд[1]"
- Помоћу фор петље прелазимо кроз укупан број редова и преузимамо вредности једну по једну. Да бисмо добили следећи ред користимо (и + 1) у КСПатх-у
- Упоређујемо стару вредност са новом, а максимална вредност се исписује на крају фор петље
ОутПут
Пример: Добијте све вредности динамичке табеле
Размотрите следећу табелу хттп://демо.гуру99.цом/тест/табле.хтмл
Број колона за сваки ред је различит.
Овде ред 1, 2 и 4 има 3 ћелије, а ред 3 има 2 ћелије, а ред 5 има 1 ћелију.
Морамо добити вредности свих ћелија
Ево кода:
импорт јава.тект.ПарсеЕкцептион;импорт јава.утил.Лист;импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт јава.утил.цонцуррент.ТимеУнит;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;јавна класа НофРовсЦолмнс {публиц статиц воид маин (Стринг [] аргс) баца ПарсеЕкцептион {ВебДривер вд;Систем.сетПроперти ("вебдривер.цхроме.дривер", "Г: //цхромедривер.еке");вд = нови ЦхромеДривер ();вд.манаге (). тимеоутс (). имплицитноВаит (5, ТимеУнит.СЕЦОНДС);вд.гет ("хттп://демо.гуру99.цом/тест/табле.хтмл");// Да лоцирам табелу.ВебЕлемент митабле = вд.финдЕлемент (Би.кпатх ("/ хтмл / боди / табле / тбоди"));// Да лоцирамо редове табеле.Листа <ВебЕлемент> редови_табела = митабле.финдЕлементс (Би.тагНаме ("тр"));// За израчунавање броја редова у табели.инт редови_број = редови_табела.сизе ();// Петља ће се извршити до последњег реда табеле.за (инт ред = 0; ред <број_реда; ред ++) {// Да лоцирамо колоне (ћелије) тог одређеног реда.Лист <ВебЕлемент> Цолумнс_ров = ров_табле.гет (ров) .финдЕлементс (Би.тагНаме ("тд"));// За израчунавање броја колона (ћелија). У том конкретном реду.инт цолумнс_цоунт = Цолумнс_ров.сизе ();Систем.оут.принтлн ("Број ћелија у реду" + ред + "су" + број_колона);// Петља ће се извршити до последње ћелије тог одређеног реда.за (инт колона = 0; колона <број_колона; колона ++) {// За преузимање текста из те одређене ћелије.Стринг целтект = Цолумнс_ров.гет (колона) .гетТект ();Систем.оут.принтлн ("Вредност ћелије броја реда" + ред + "и броја колоне" + колона + "Ис" + целтект);}Систем.оут.принтлн ("------------------------------------------- ------- ");}}}
Објашњење кода:
- редови_број даје укупан број редова
- за сваки ред добијамо укупан број колона помоћу редова_табела.гет (ред) .финдЕлементс (Би.тагНаме ("тд"));
- Прелазимо кроз сваку колону и сваки ред и дохваћамо вредности.
Излаз :
Резиме
- Би.кпатх () се обично користи за приступ елементима табеле.
- Статичке веб табеле у селену су доследне природе. тј. они имају фиксни број редова као и податке о ћелији.
- Динамичке веб табеле су недоследне, тј. Немају фиксни број редова и података о ћелијама.
- Коришћењем управљачког програма за селен можемо лако да рукујемо динамичким веб табелама.
- Селениум Вебдривер омогућава нам приступ динамичким веб табелама путем њихове Кс путање
Чланак је дао Канцхан Кулкарни.