Selenioa Klik Esteka href Balioaren arabera

Selenium WebDriver-en, web elementuekin elkarreragiteko hainbat modu daude, hala nola elementuaren IDa, XPath, CSS, etab.

Esteketan ere egin dezakegu klik linkText bidez edo partialLinkText. Metodo hauek onak dira arteko itxarotako testua ezagutzen badugu etiketak.

Hala ere, lokalizazio edo nazioartekotze probak egiten ditugunean, testua horren arabera itzultzen da eta jada ezin dugu linkText edo partialLinkText erabili, batez ere aingura etiketek ID edo klaserik ez badute.


Demagun profile.html seinalatzen duen esteka batean klik egin nahi dugula,

adibidez


View Profile

Lehen esan bezala, erabil dezakegu

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

eta horrek funtzionatuko du, betiere ingeles hizkuntza duen orrialde batean bagaude.

Hizkuntza alemanera aldatzen dugunean, adibidez, gure esteka bistaratzen da

Profil ansehen

Orain, lerroa


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

huts egingo luke testu horrekin profileko orrian ez dagoelako estekarik.

Hori gainditzeko modu bat esteka batean klik egitea da href balioa, gunearen hizkuntza aldatzen denean ere href estekak kokapen bera seinalatu beharko lukeelako.

Beste era batera esanda, nazioartekotzeak ez luke eragin behar esteken hrefean.

WebDriver-ek ez du esteka bat klikatzeko modu autonomo eta zuzena bere href balioaren arabera. Horren ordez, orriko esteka guztiak lortu behar ditugu, href atributua atera eta gero href balioak espero dugunarekin alderatu behar ditugu.




Egin klik Esteka href-en arabera

Demagun esteka hauek ditugula eta profileko estekan klik egin nahi dugula

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;
}
} }

Ondoren clickLinkByHref('Profile') erabil dezakegu

eta, ondoren, goiko funtzioak orriko esteka guztiak lortuko ditu eta horien bidez errepikatuko da eta profila duen esteka aurkitzen duenean, WebDriver-ek estekan klik egingo du.

Oharra, profila hitza duten hainbat lotura baditugu, goiko funtzioak beti egingo du klik profila hitza duen lehen estekan. Goiko kodea alda dezakegu zein estekatan klik egin nahi dugun sartzeko:


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;
}
} }

Irakurketa gehiago: