xpath axes dynamic xpath selenium webdriver
Овај водич објашњава КСПатх осе за динамички КСПатх у програму Селениум ВебДривер уз помоћ различитих коришћених КСПатх осе, примери и објашњење структуре:
У претходном упутству научили смо о КСПатх функцијама и његовом значају у идентификовању елемента. Међутим, када више од једног елемента има превише сличну оријентацију и номенклатуру, постаје немогуће јединствено га идентификовати.
=> Овде погледајте савршен водич за селен.
Шта ћете научити:
Разумевање КСПатх осе
Да разумемо горе поменути сценарио уз помоћ примера.
Размислите о сценарију у коме се користе две везе са текстом „Уреди“. У таквим случајевима постаје релевантно разумети чворну структуру ХТМЛ-а.
Копирајте доле наведени код у нотепад и сачувајте га у .хтм датотеци.
Edit Edit
Кориснички интерфејс ће изгледати као доњи екран:
Изјава о проблему
П # 1) Шта учинити када ни КСПатх функције не успеју да идентификују елемент?
Одговор: У таквом случају користимо КСПатх осе заједно са КСПатх функцијама.
Други део овог чланка говори о томе како можемо да користимо хијерархијски ХТМЛ формат за идентификацију елемента. Започећемо са добијањем мало информација о КСПатх секирама.
П # 2) Шта су КСПатх осе?
Одговор: Оси КСПатх дефинишу скуп чворова у односу на тренутни (контекст) чвор. Користи се за лоцирање чвора који је у односу на чвор на том дрвету.
П # 3) Шта је контекстни чвор?
Одговор: Чвор контекста може се дефинисати као чвор који КСПатх процесор тренутно гледа.
Различите КСПатх осе за тестирање селена
Постоји доле наведених тринаест различитих осе. Међутим, нећемо их све користити током тестирања селена.
- предак : Ова оса указује на све претке у односу на чвор контекста, који сежу и до коренског чвора.
- предак или ја: Овај указује на чвор контекста и све претке у односу на чвор контекста и укључује коренски чвор.
- атрибут: Ово указује на атрибуте контекстног чвора. Може се представити симболом „@“.
- дете: Ово указује на децу чвора контекста.
- надоле: Ово указује на децу, унуке и њихову децу (ако их има) чвора контекста. Ово НЕ означава простор атрибута и имена.
- потомак или ја: Ово указује на чвор контекста и децу, и унуке и њихову децу (ако их има) чвора контекста. Ово НЕ означава атрибут и простор имена.
- следећи: Ово указује на све чворове који се појављују после чвор контекста у ХТМЛ ДОМ структури. Ово НЕ указује на потомство, атрибут и простор имена.
- сродници: Овај указује на све чворове браће и сестара (исти родитељ као и чвор контекста) који појавити након чвора контекста у ХТМЛ ДОМ структури. Ово НЕ указује на потомство, атрибут и простор имена.
- простор имена: Ово указује на све чворове простора имена чвора контекста.
- родитељ: Ово указује на родитеља чвора контекста.
- претходи: Ово указује на све чворове који се појављују пре него што чвор контекста у ХТМЛ ДОМ структури. Ово НЕ указује на потомство, атрибут и простор имена.
- претходни брат или сестра: Овај указује на све чворове сродне браће (исти родитељ као чвор контекста) који се појављују пре него што чвор контекста у ХТМЛ ДОМ структури. Ово НЕ указује на потомство, атрибут и простор имена.
- селф: Овај указује на чвор контекста.
Структура КСПатх осе
Размотрите доњу хијерархију да бисте разумели како КСПатх осе раде.
Погледајте горњи пример једноставног ХТМЛ кода. Молимо копирајте доњи код у уређивач бележнице и сачувајте га као .хтмл датотеку.
Animal
Vertebrate
Fish
Mammal
Herbivore
Carnivore
Lion
Tiger
Other
Invertebrate
Insect
Crustacean
Страница ће изгледати доле. Наша мисија је да користимо КСПатх осе за јединствено проналажење елемената. Покушајмо да идентификујемо елементе који су означени на горњој табели. Чвор контекста је „Сисари“
# 1) Предак
Дневник: Да бисте идентификовали елемент претка из чвора контекста.
КСПатх # 1: // див (@ цласс = ’Сисар’) / предак :: див
КСПатх „// див (@ цласс =’ Маммал ’) / предак :: див“ баца два одговарајућа чвора:
- Кичмењаци, будући да је родитељ „сисара“, па се и због тога сматра претком.
- Животиња као родитељ родитеља „Сисара“, стога се сматра претком.
Сада треба да идентификујемо само један елемент који је класа „Животиња“. Можемо користити КСПатх као што је доле споменуто.
XPath#2: //div(@class='Mammal')/ancestor::div(@class='Animal')
Ако желите да дођете до текста „Животиња“, испод КСПатх се може користити.
# 2) Предак или ја
Дневник: Да бисте идентификовали чвор контекста и елемент претка из чвора контекста.
иоутубе то мп4 претварач високог квалитета
КСПатх # 1: // див (@ цласс = ’Сисар’) / предак-или-сам :: див
Горњи КСПатх # 1 баца три одговарајућа чвора:
- Животиња (предак)
- Кичмењаци
- Сисари (само)
# 3) Дете
Дневник: Да би се идентификовало дете чвора контекста „Сисари“.
КСПатх # 1: // див (@ цласс = ’Сисар’) / дете :: див
КСПатх # 1 помаже да се идентификује сва деца чвора контекста „Сисари“. Ако желите да добијете одређени подређени елемент, користите КСПатх # 2.
КСПатх # 2: // див (@ цласс = ’Сисар’) / дете :: див (@ цласс = ’Биљојед’) / х5
# 4) Потомак
Дневник: Да би се идентификовала деца и унуци контекстног чвора (на пример: „Животиња“).
КСПатх # 1: // див (@ цласс = ’Анимал’) / потомак :: див
Како је Анимал главни члан хијерархије, сви елементи детета и потомка постају истакнути. Такође можемо променити контекстни чвор за референцу и користити било који елемент који желимо као чвор.
# 5) Потомак или ја
Дневник: Да се пронађе сам елемент и његови потомци.
КСПатх1: // див (@ цласс = ’Анимал’) / потомак-или-сам :: див
Једина разлика између потомака и потомка-или-ја је у томе што се истиче поред истицања потомака.
# 6) Следи
Дневник: Да бисте пронашли све чворове који прате контекстни чвор. Овде је чвор контекста див који садржи елемент Сисар.
КСПатх: // див (@ цласс = ’Сисар’) / следећи :: див
У следећим оси, сви чворови који прате чвор контекста, било да је то дете или потомак, постају истакнути.
# 7) Сродни брат или сестра
Дневник: Да бисте пронашли све чворове након чвора контекста који деле истог родитеља и који су брат или сестра чвора контекста.
КСПатх: // див (@ цласс = ’Сисар’) / следење брата / сестре :: див
Главна разлика између следећег и сродног брата је у томе што сроднички брат узима све чворове након контекста, али ће такође делити истог родитеља.
# 8) Претходно
Дневник: Потребни су сви чворови који долазе пре чвора контекста. То може бити родитељ или чвор баке и деке.
Овде је чвор контекста бескичмењак, а истакнуте линије на горњој слици су сви чворови који долазе пре чвора бескичмењака.
# 9) Претходни брат или сестра
Дневник: Да бисте пронашли брата и сестру који деле истог родитеља као и чвор контекста, а који долази испред чвора контекста.
Како је чвор контекста бескичмењак, једини елемент који се истиче је кичмењак, јер су ова двојица браћа и сестре и деле истог родитеља „Животиња“.
# 10) Родитељ
Дневник: Да бисте пронашли надређени елемент чвора контекста. Ако је сам чвор контекста предак, неће имати надређени чвор и неће дохватити одговарајуће чворове.
Контекстни чвор # 1: Сисари
КСПатх: // див (@ цласс = ’Сисар’) / надређени :: див
Како је чвор контекста сисар, елемент са кичменицима се истиче, јер је то родитељ сисара.
Контекстни чвор # 2: Животиња
КСПатх: // див (@ цласс = ’Анимал’) / парент :: див
Како је сам чвор животиње предак, неће истакнути ниједан чвор, па стога нису пронађени одговарајући чворови.
# 11) Ја
Дневник: Да би се пронашао чвор контекста, користи се селф.
Контекстни чвор: Сисар
КСПатх: // див (@ цласс = ’Сисар’) / селф :: див
Као што горе можемо видети, објекат сисара идентификован је јединствено. Такође можемо да одаберемо текст „Сисари користећи доле наведени КСПатх.
КСПатх: // див (@ цласс = ’Сисар’) / селф :: див / х4
шта статичка анализа не може наћи
Употребе претходних и следећих осе
Претпоставимо да знате да је ваш циљни елемент број ознака испред или назад од контекстног чвора, можете директно означити тај елемент, а не све елементе.
Пример: Претходно (са индексом)
Претпоставимо да је наш чвор контекста „Остало“ и желимо да досегнемо елемент „Сисар“, за то бисмо користили доњи приступ.
Први корак: Једноставно користите претходни, без давања било какве вредности индекса.
КСПатх: // див (@ цласс = ’Отхер’) / претходни :: див
Ово нам даје 6 одговарајућих чворова, а желимо само један циљани чвор „Сисар“.
Други корак: Дајте вредност индекса (5) елементу див (одбројавањем према горе од контекстног чвора).
КСПатх: // див (@ цласс = ’Отхер’) / претходни :: див (5)
На тај начин је елемент „Сисар“ успешно идентификован.
Пример: следећи (са индексом)
Претпоставимо да је наш чвор контекста „Сисар“ и желимо да дођемо до елемента „Ракови“, за то ћемо користити приступ испод.
Први корак: Једноставно користите следеће без навођења вредности индекса.
КСПатх: // див (@ цласс = ’Сисар’) / следећи :: див
Ово нам даје 4 подударна чвора, а желимо само један циљани чвор „Ракови“
Други корак: Дајте вредност индекса (4) елементу див (рачунајте унапред од контекстног чвора).
КСПатх: // див (@ цласс = ’Отхер’) / фолловинг :: див (4)
На овај начин је елемент „Ракови“ успешно идентификован.
Горњи сценарио се такође може поново креирати помоћу претходни-сестра и сродници применом горњег приступа.
Закључак
Идентификација објекта је најважнији корак у аутоматизацији било које веб странице. Ако успете да стекнете вештину да тачно научите предмет, 50% аутоматизације је готово. Иако су доступни локатори за идентификацију елемента, постоје неки случајеви када чак и локатори не успевају да идентификују објекат. У таквим случајевима морамо применити различите приступе.
Овде смо користили КСПатх функције и КСПатх осе за јединствену идентификацију елемента.
Завршавамо овај чланак записујући неколико тачака које треба запамтити:
- Не бисте требали примењивати осе „предак“ на чвор контекста, а сам чвор контекста је предак.
- Не би требало да примените „родитељске“ осе на контекстурном чвору самог контекстног чвора који је предак.
- Не бисте требали примењивати осе „дете“ на контекстни чвор самог контекстног чвора који је потомак.
- Не бисте требали примењивати осе „потомак“ на чвору контекста самог чвора контекста који је предак.
- Не би требало да примените „следеће“ осе на контекстном чвору, последњем чвору у структури ХТМЛ документа.
- Не би требало да примените „претходне“ осе на контекстном чвору, то је први чвор у структури ХТМЛ документа.
Срећно учење !!!
=> Посетите овде за ексклузивну серију лекција за обуку о селену.
Препоручено читање
- КСПатх функције за динамички КСПатх у селену
- Водич за краставац селениј: Интеграција Јава Селениум ВебДривер краставца
- Локатори селена: Идентификујте веб-елементе помоћу КСПатх-а у селену (примери)
- Увод у Селениум ВебДривер - Водич за селен бр. 8
- Водич за ЦхромеДривер Селениум: Тестови Селениум Вебдривер-а на Цхроме-у
- Примена наше прве скрипте за ВебДривер - Водич бр. 10 за Селениум ВебДривер
- 30+ најбољих водича за селен: научите селен на стварним примерима
- Руковање веб табелама, оквирима и динамичким елементима у скрипту Селениум - Водич за селен # 18