Սելենիա Սեղմեք հղումը ըստ href Արժեքի

Selenium WebDriver- ում կան մի շարք եղանակներ, որոնցով մենք կարող ենք փոխազդել վեբ տարրերի հետ, ինչպիսիք են տարրերի ID- ն, XPath- ը, CSS- ը և այլն

Կարող ենք նաև սեղմել հղումները ՝ ըստ linkText կամ partialLinkText. Այս մեթոդները լավն են, եթե մենք գիտենք սպասվող տեքստը -ի միջև պիտակները:

Այնուամենայնիվ, երբ մենք տեղայնացման կամ միջազգայնացման փորձարկում ենք կատարում, տեքստը համապատասխանաբար թարգմանվում է, և մենք այլևս ի վիճակի չենք օգտագործել linkText կամ partialLinkText, հատկապես եթե խարիսխի պիտակները չեն պարունակում որևէ ID կամ դաս:


Ենթադրենք, որ մենք ուզում ենք կտտացնել հղմանը, որը մատնանշում է profile.html,

օր.


View Profile

Ինչպես արդեն նշվեց ավելի վաղ, մենք կարող ենք օգտագործել

driver.findElement(By.linkText('View Profile')).click()

և դա կաշխատի, քանի դեռ մենք գտնվում ենք անգլերեն լեզվով էջում:

Օրինակ, երբ մենք փոխում ենք լեզուն գերմաներենի, մեր հղումը հիմա ցուցադրվում է

Profil ansehen

Հիմա ՝ գիծը


driver.findElement(By.linkText('View Profile')).click()

ձախողվելու էր, քանի որ պրոֆիլի էջում այդ տեքստով հղում չկա:

Սա հաղթահարելու միջոցներից մեկը հղումը սեղմելն է `իր href - ով արժեքը, քանի որ նույնիսկ այն ժամանակ, երբ կայքի լեզուն փոխում է, href հղումը դեռ պետք է մատնանշի նույն տեղը:

Այլ կերպ ասած, միջազգայնացումը չպետք է ազդի հղումների կուտակման վրա:

WebDriver- ը չունի href արժեքով հղում սեղմելու ինքնուրույն և ուղիղ եղանակ: Փոխարենը, մենք պետք է ստանանք էջի բոլոր հղումները, հանենք href հատկանիշը և ապա համեմատենք href- ի արժեքները մեր սպասածի հետ:




Կտտացրեք հղումը ըստ href- ի

Ենթադրենք, որ մենք ունենք հետևյալ հղումները և ուզում ենք կտտացնել պրոֆիլի հղմանը

View Profile Transactions public void clickLinkByHref(String href) {
List anchors = driver.findElements(By.tagName('a');
Iterator i = anchors.iterator();
while(i.hasNext()) {
WebElement anchor = i.next();
if(anchor.getAttribute('href').contains(href)) {

anchor.click();

break;
}
} }

Այդ դեպքում կարող ենք օգտագործել clickLinkByHref('Profile')

ապա վերը նշված գործառույթը կստանա էջի բոլոր հղումները և կրկնվում է դրանց միջոցով, և երբ գտնում է պրոֆիլ պարունակող հղում, WebDriver- ը կտտացնում է հղմանը:

Ուշադրություն դարձրեք, եթե դրանցում կա մի քանի հղում բառի պրոֆիլի հետ, ապա վերը նշված գործառույթը միշտ կտտացնում է բառի պրոֆիլը պարունակող առաջին հղմանը: Մենք կարող ենք վերափոխել վերոհիշյալ ծածկագիրը ՝ ներառելու այն հղումներից, որոնք ուզում ենք կտտացնել.


public void clickLinkByHref(String href, int position) {
List anchors = driver.findElements(By.tagName('a');
Iterator i = anchors.iterator();
int j = 0;
while(i.hasNext()) {
WebElement anchor = i.next();

if(anchor.getAttribute('href').contains(href)) {

j++;
}

if(anchor.getAttribute('href').contains(href)


&& j == position) {

anchor.click();

break;
}
} }

Հետագա ընթերցում.