Како се рукује веб табелом у програму Селениум ВебДривер

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

Anonim

Читање ХТМЛ веб табеле

Постоје тренуци када треба да приступимо елементима (обично текстовима) који се налазе у ХТМЛ табелама. Међутим, веб дизајнер ретко пружа атрибут ид или име одређеној ћелији у табели. Стога не можемо да користимо уобичајене методе као што су „Би.ид ()“, „Би.наме ()“ или „Би.цссСелецтор ()“. У овом случају, најпоузданија опција је приступ њима помоћу методе „Би.кпатх ()“.

У овом упутству ћете научити-

  • Како написати КСПатх за табелу
  • Приступ угнежђеним табелама
  • Коришћење атрибута као предиката
  • Пречица: Користите елемент Инспецт за приступ табелама у селену

Како написати КСПатх за табелу

Размотрите ХТМЛ код у наставку.

Користићемо КСПатх да добијемо унутрашњи текст ћелије који садржи текст „четврта ћелија“.

Корак 1 - Подесите родитељски елемент (табела)

Локатори КСПатх у ВебДриверу увек почињу са двоструком косом цртом унапред „//“, а затим иза ње следи родитељски елемент . Будући да имамо посла са табелама, надређени елемент увек треба да буде ознака <табле>. Стога би први део нашег КСПатх локатора требало да започне са „// табле“.

Корак 2 - Додајте подређене елементе

Елемент који се налази непосредно испод <табле> је <тбоди>, тако да можемо рећи да је <тбоди> "дете" <табле>. Такође, <табле> је "родитељ" <тбоди>. Сви подређени елементи у КСПатх-у постављени су десно од свог родитељског елемента, одвојени једном косом цртом "/" као код приказан доле.

Корак 3 - Додајте предикате

Елемент <тбоди> садржи две ознаке <тр>. Сада можемо рећи да су ове две <тр> ознаке „деца“ од <тбоди>. Сходно томе, можемо рећи да је <тбоди> родитељ оба елемента <тр>.

Друга ствар коју можемо закључити је да су два <тр> елемента браћа и сестре. Браћа и сестре се односе на дечје елементе који имају истог родитеља .

Да бисмо дошли до <тд> којем желимо да приступимо (оног са текстом „четврта ћелија“), прво морамо да приступимо другом <тр>, а не првом. Ако једноставно напишемо „// табле / тбоди / тр“, приступићемо првој <тр> ознаци.

Па, како онда приступити другом <тр>? Одговор на ово је коришћење предиката .

Предикати су бројеви или ХТМЛ атрибути затворени у пар угластих заграда „[]“ који разликују подређени елемент од његове браће и сестара . Пошто је <тр> којем требамо приступити други, користићемо „[2]“ као предикат.

Ако не користимо ниједан предикат, КСПатх ће приступити првом брату или сестри. Стога можемо приступити првом <тр> користећи било који од ових КСПатх кодова.

Корак 4 - Додајте наследне подређене елементе помоћу одговарајућих предиката

Следећи елемент којем треба да приступимо је други <тд>. Примењујући принципе које смо научили из корака 2 и 3, финализоваћемо наш КСПатх код као онај приказан у наставку.

Сада када имамо исправан КСПатх локатор, већ можемо приступити ћелији коју смо желели и добити њен унутрашњи текст помоћу доњег кода. Претпоставља се да сте горе наведени ХТМЛ код сачували као „невхтмл.хтмл“ на свом Ц диску.

јавна статичка воид главна (Стринг [] аргс) {Стринг басеУрл = "хттп://демо.гуру99.цом/тест/врите-кпатх-табле.хтмл";Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет (басеУрл);Стринг иннерТект = дривер.финдЕлемент (Би.кпатх ("// табле / тбоди / тр [2] / тд [2]")). ГетТект ();Систем.оут.принтлн (иннерТект);дривер.куит ();}}

Приступ угнежђеним табелама

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

Да бисмо приступили ћелији са текстом „4-5-6“ помоћу „// родитељ / дете“ и предикатним концептима из претходног одељка, требало би да дођемо до КСПатх кода у наставку.

Доље наведени ВебДривер код треба да може да преузме унутрашњи текст ћелије којој приступамо.

јавна статичка воид главна (Стринг [] аргс) {Стринг басеУрл = "хттп://демо.гуру99.цом/тест/аццессинг-нестед-табле.хтмл";Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет (басеУрл);Стринг иннерТект = дривер.финдЕлемент (Би.кпатх ("// табле / тбоди / тр [2] / тд [2] / табле / тбоди / тр / тд [2]")). ГетТект ();Систем.оут.принтлн (иннерТект);дривер.куит ();}

Излаз у наставку потврђује да је унутрашњој табели успешно приступљено.

Коришћење атрибута као предиката

Ако је елемент написан дубоко у ХТМЛ коду тако да је број који се користи за предикат врло тешко одредити, уместо њега можемо користити јединствени атрибут тог елемента.

У примеру испод, ћелија „Њујорк до Чикага“ налази се дубоко у ХТМЛ коду почетне странице Мерцури Тоурс-а.

У овом случају као предикат можемо користити јединствени атрибут табеле (ширина = "270"). Атрибути се користе као предикати додавањем префикса са симболом @ . У горњем примеру, ћелија „Њујорк до Чикага“ налази се у првој <тд> четвртој <тр>, тако да би наш КСПатх требао бити као што је приказано доле.

Запамтите да када ставимо КСПатх код у Јаву, требало би да користимо црту уназад за црте "\" за двоструке наводнике са обе стране "270", тако да аргумент низа Би.кпатх () неће бити превремено прекинут .

Сада смо спремни да приступимо тој ћелији помоћу доњег кода.

јавна статичка воид главна (Стринг [] аргс) {Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет (басеУрл);Стринг иннерТект = дривер.финдЕлемент (Аутор.кпатх ("// табела [@ ширина = \" 270 \ "] / тбоди / тр [4] / тд")).гетТект ();Систем.оут.принтлн (иннерТект);дривер.куит ();}

Пречица: Користите елемент Инспецт за приступ табелама у селену

Ако је број или атрибут елемента изузетно тешко или немогуће добити, најбржи начин генерисања КСПатх кода је коришћење елемента Инспецт Елемент.

Размотрите пример у наставку са почетне странице Мерцури Тоурс-а.

Корак 1

Користите Фиребуг да бисте добили КСПатх код.

Корак 2

Потражите први надређени елемент „табела“ и избришите све лево од њега.

3. корак

Префиксујте преостали део кода двоструком косом цртом унапред "//" и копирајте га у свој ВебДривер код.

Код ВебДривер доле ће моћи успешно да преузме унутрашњи текст елемента којем приступамо.

јавна статичка воид главна (Стринг [] аргс) {Стринг басеУрл = "хттп://демо.гуру99.цом/тест/невтоурс/";Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет (басеУрл);Стринг иннерТект = дривер.финдЕлемент (Аутор.кпатх ("// табела / тјело / тр / тд [2]"+ "// табела / тбоди / тр [4] / тд /"+ "табле / тбоди / тр / тд [2] /"+ "табела / тело / тр [2] / тд [1] /"+ "табела [2] / тбоди / тр [3] / тд [2] / фонт")).гетТект ();Систем.оут.принтлн (иннерТект);дривер.куит ();}

Резиме

  • Би.кпатх () се обично користи за приступ елементима табеле.
  • Ако је елемент написан дубоко у ХТМЛ коду тако да је број који се користи за предикат врло тешко одредити, уместо њега можемо користити јединствени атрибут тог елемента.
  • Атрибути се користе као предикати додавањем префикса са симболом @.
  • Употребите Инспецт Елемент за приступ табелама у селену