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.
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: