xpath functions dynamic xpath selenium
Овај водич објашњава употребу КСПатх функција у идентификовању елемената са примерима:
Пре аутоматизације било ког веб сајта потребно је правилно идентификовати објекат пре него што можемо извршити било коју операцију на истом. Као што знамо да је елемент најлакше идентификовати помоћу атрибута попут ИД-а, имена, везе, класе или било ког другог јединственог атрибута који је доступан са ознаком у којој елемент борави.
То је могуће само када су ови атрибути присутни и / или су јединствени, тако да је објекат правилно идентификован.
=> Овде погледајте водич за почетнике селена.
Шта ћете научити:
Преглед КСПатх функција
Разговарајмо о сценарију у којем атрибути нису лако доступни.
Изјава о проблему
Како да идентификујемо елемент ако локатори попут ИД-а, имена, класе, везе итд. Нису доступни у ознаци елемента?
То се јасно може разумети на наведеном примеру:
Пријавите се на Твиттер
Као што можете видети на горњем снимку екрана, заглавље „Пријави се на Твиттер“ нема атрибуте. Кад смо то већ рекли, не можемо да користимо било који од локатора као што су ИД, класа, веза или име да бисмо идентификовали овај елемент.
животни циклус грешке у тестирању софтвера
Додатак Фирепатх за Фирефок алатку генерисао је доњи КСПатх:
// * (@ ид = ’паге-цонтаинер’) / див / див (1) / х1
Нећемо препоручити употребу горњег КСПатх-а као структуру странице или ИД, јер се може динамички променити. Ако користимо овај нестабилни КСПатх, можда ћемо морати чешће да мењамо КСПатх, што захтева више времена за одржавање. Ово је случај у којем не можемо да користимо генерички израз КСПатх са локаторима као што су ид, класа, име или веза.
Решење
Препознавање елемента помоћу текста КСПатх функције
Како нам је доступан видљиви текст „Пријави се на Твиттер“, искористили бисмо следеће КСПатх функције да јединствено идентификује елемент.
- садржи () (Текстом)
- започиње са () (Текстом)
- текст ()
КСПатх функције као што садржи (), започиње са () и текст () када се користе уз помоћ текста „Пријави се на Твиттер“ помогле би нам да правилно идентификујемо елемент, а на њему се могу обављати и даље операције.
# 1) Садржи () метод:
Синтакса: Да бисте пронашли веб-елемент „Пријави се на Твиттер“, користите било који од следећих израза КСПатх који садрже методу цонтаинс ().
Текстом
- // х1 (садржи (текст (), ’Пријави се у’))
- // х1 (садржи (текст (), ’у на Твиттер’))
Напомена: 1 одговарајући чвор означава да је веб-елемент успешно идентификован.
Из горњег примера је јасно да методи цонтаинс () није потребан апсолутни (пуни) текст да би елемент правилно препознао. Делимични текст је довољан да га правилно идентификује. Међутим, изабрани делимични текст треба да буде јединствен. Корисник може лако идентификовати елемент чак и ако се оријентација странице промени помоћу методе цонтаинс ().
Имајте на уму да би чак и ако користите апсолутни текст „Пријави се на Твиттер“ методом цонтаинс () елемент био правилно идентификован.
# 2) Почиње са () методом:
Синтакса: Да бисте пронашли веб-елемент „Пријави се на Твиттер“, користите следећи пример КСПатх израза који имају метод започиње са ().
Текстом
- // х1 (започиње са (текст (), ’Пријави се’))
- // х1 (започиње са (текст (), ’Пријави се на’))
Из горњег примера је јасно да метода КСПатх функције започиње са () захтева најмање прву реч („Дневник“) видљивог текста да би јединствено идентификовала елемент. Такође ради на делимичном тексту и неће успети ако не уврстимо прву реч делимично видљивог текста.
Имајте на уму да ће, чак и ако користите апсолутни текст „Пријави се на Твиттер“ методом старт-витх (), елемент бити исправно идентификован.
Неважећи КСПатх за покретање са (): // х1 (започиње са (тект (), ’ин то Твиттер’))
Белешка: Ниједан одговарајући чвор не указује на то да веб-елемент није идентификован.
# 3) Текст () метода:
Синтакса: Да бисте пронашли веб-елемент „Пријави се на Твиттер“, користите следећи израз КСПатх који има методу тект ().
У овом изразу користимо апсолутни текст који је присутан између почетне ознаке. Ако користимо функцију тект () са делимичним Кспатхом као што то радимо у цонтаинс () и старт-витх (), не бисмо могли да пронађемо елемент.
Неважећи Кспатх за текст ():
Препознавање елемента помоћу функција КСПатх по атрибутима
Функције КСПатх (садржи или започиње са) користимо са атрибутом када су у ознаци контејнера доступне неке јединствено идентификоване вредности атрибута. Атрибутима се приступа помоћу симбола „@“.
Ово се може јасно разумети са датим пример:
Пријавите се на Гоогле
# 1) Садржи () метод:
Синтакса: Да бисте јединствено идентификовали елемент дугмета „Осјећам се срећно“ помоћу функције КСПатх садржи () уз помоћ атрибута.
(и) Према атрибуту вредности:
- // улаз (садржи (@ вредност, ’осећај’))
- // улаз (садржи (@ вредност, ’Срећно’))
Из горњих слика се подразумева да ће употреба вредности атрибута са методом „Осећај“ или „Срећа“ помоћу садржи () јединствено идентификовати елемент. Међутим, важно је напоменути да ће чак и ако користимо целокупан садржај атрибута Валуе, елемент правилно идентификовати.
(ии) Атрибут по имену:
//input(contains(@name=’btnI’))
Неважећи случај за КСПатх функцију са атрибутом:
Морамо бити врло опрезни при одабиру атрибута који ће се користити са методом цонтаинс () и старт-витх (). Ако вредност атрибута није јединствена, нећемо моћи јединствено да идентификујемо елемент.
Претпоставимо, ако узмемо атрибут „типе“ када идентификујемо дугме „И'м Феелинг Луцки“, КСПатх неће функционисати.
2 одговарајућа чвора указују на то да елемент није правилно идентификован. Овде вредност атрибута типа није јединствена.
# 2) Почиње са () методом:
Метода старт-витх () са атрибутом је врло корисна када морамо да пронађемо елементе чији први део атрибута остаје фиксиран, док се каснији део наставља мењати. Овај приступ је веома користан када објекти динамички мењају вредност својих атрибута. Ово се такође може користити ако желимо да ухватимо сличне врсте елемената.
Иди на Фацебоок пријава
Прегледајте прво поље за текст „Име“ и друго поље за текст „Презиме“ обрасца за регистрацију.
Идентификовано је прво поље за текст „Име“.
Идентификовано је друго поље за текст „Презиме“.
У оба поља за текст која су идентификована за Региструј се за Фацебоок, почетни део атрибута ид остаје непромењен.
Име ид = “у_0_2”
Презиме ид = ’у_0_4”
Ово је сценарио у којем можемо користити атрибут старт-витх () да бисмо добили све елементе под таквом врстом атрибута ид. Имајте на уму да узимамо ова два поља само као референцу. Међутим, на екрану може бити више поља са ид-овима која почињу са „у_0_“.
Почиње са () (По атрибуту ид)
//input(starts-with(@id,”u_0_”))
Важна напомена: Овде смо користили двоструке наводнике уместо једноструке наводнике. Али појединачни цитати ће радити и са методом старт-витх.
11 чворова који се подударају указују да је овај КСПатх идентификовао све елементе који иди почињу са „у_0_“. Потоњи део ид-а (2 за име, 4 за презиме итд.) Одређује како ћемо јединствено идентификовати елемент.
Можемо користити атрибут функције старт-витх тамо где треба да прикупимо сличан тип елемената на листи и динамички одаберемо један од њих заобилазећи аргумент у генеричкој методи да бисмо јединствено идентификовали елемент.
Следите доњи пример да бисте функцију старт-витх користили у нашу корист.
Пример кода:
/* Generic Method */ public void xpathLoc(String identifier){ //The below step identifies the element “First Name” uniquely when the argument is “2” WebElement E1=d1.findElement(By.xpath('//input(starts-with(@id,”u_0_”+identifier ))')); E1.sendKeys(“Test1”); /* This step enters the value of First Name as “Test 1” */ } /* Main Method */ public static void main(String() args) { xpathLoc(“2”); --- This step calls the xpathLoc() method to identify the first name. }
Белешка: Ецлипсе можда не дозвољава употребу двоструких наводника. Можда ћете морати да прибегнете другом коду да бисте направили динамички КСПатх.
Узорак кода је дат за референцу. Можете га побољшати тако да стане у све елементе и операције које желите да извршите и вредности које желите да унесете (у случају текстуалних поља) како бисте код учинили свестранијим.
Закључак
Овај чланак је објаснио како можемо да користимо КСПатх функције садржи (), започиње са () и текст () са атрибутима и текстом за јединствену идентификацију елемената у ХТМЛ ДОМ структури.
Испод су нека запажања која можемо извући за КСПатх функције:
- Користите методу “цонтаинс ()” у КСПатх-у ако знате делимично константни видљиви текст или атрибут.
- Користите методу „започиње са ()“ у КСПатх-у ако знате почетни делимично константан видљив текст или атрибут.
- Такође можете да користите методу цонтаинс () и старт-витх () са апсолутним текстом или атрибутом.
- Користите методу „тект ()“ у КСПатху ако знате апсолутно видљив текст.
- Не можете користити методу тект () са делимичним текстом.
- Не можете користити методу старт-витх () ако се почетни текст не користи у КСПатх-у или ако се почетни текст непрестано мења.
У следећем упутству научићемо како да користимо КСПатх осе са КСПатх функцијама да бисмо додатно побољшали локацију елемената на доступној веб страници.
=> Прочитајте серију Еаси Траининг за селен.
Препоручено читање
- Локатори селена: Идентификујте веб-елементе помоћу КСПатх-а у селену (примери)
- Руковање веб табелама, оквирима и динамичким елементима у скрипту Селениум - Водич за селен # 18
- Питхон Стринг функције
- Постпроцесор Кспатх Ектрацтор у ЈМетер-у
- Водич за текст помоћу примера у тексту за проналажење селена
- Водич за краставац селениј: Интеграција Јава Селениум ВебДривер краставца
- Свеобухватан водич за КСПатх - језик КСМЛ путање
- Увод у Селениум ВебДривер - Водич за селен бр. 8