Читање ХТМЛ веб табеле
Постоје тренуци када треба да приступимо елементима (обично текстовима) који се налазе у ХТМЛ табелама. Међутим, веб дизајнер ретко пружа атрибут ид или име одређеној ћелији у табели. Стога не можемо да користимо уобичајене методе као што су „Би.ид ()“, „Би.наме ()“ или „Би.цссСелецтор ()“. У овом случају, најпоузданија опција је приступ њима помоћу методе „Би.кпатх ()“.
У овом упутству ћете научити-
- Како написати КСПатх за табелу
- Приступ угнежђеним табелама
- Коришћење атрибута као предиката
- Пречица: Користите елемент Инспецт за приступ табелама у селену
Како написати КСПатх за табелу
Размотрите ХТМЛ код у наставку.
Користићемо КСПатх да добијемо унутрашњи текст ћелије који садржи текст „четврта ћелија“.
Корак 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] / фонт")).гетТект ();Систем.оут.принтлн (иннерТект);дривер.куит ();}
Резиме
- Би.кпатх () се обично користи за приступ елементима табеле.
- Ако је елемент написан дубоко у ХТМЛ коду тако да је број који се користи за предикат врло тешко одредити, уместо њега можемо користити јединствени атрибут тог елемента.
- Атрибути се користе као предикати додавањем префикса са симболом @.
- Употребите Инспецт Елемент за приступ табелама у селену