Selen Smellið á hlekk eftir href gildi

Í Selenium WebDriver eru nokkrar leiðir sem við getum haft samskipti við vefþætti, svo sem með auðkenni þáttar, XPath, CSS osfrv.

Við getum líka smellt á krækjur með linkText eða partialLinkText. Þessar aðferðir eru góðar ef við þekkjum væntanlegan texta á milli merkimiðar.

En þegar við gerum staðfærslu- eða alþjóðavæðingarprófanir er textinn þýddur í samræmi við það og við getum ekki lengur notað linkText eða partialLinkText, sérstaklega ef akkerimerkin innihalda engin auðkenni eða flokk.


Segjum sem svo að við viljum smella á hlekk sem vísar á profile.html,

t.d.


View Profile

Eins og fyrr segir getum við notað



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

og það mun virka, svo framarlega sem við erum á síðu með ensku.

Þegar við breytum til dæmis tungumálinu yfir í þýsku birtist hlekkurinn okkar núna

Profil ansehen

Nú, línan


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

myndi mistakast vegna þess að það er enginn hlekkur á prófílsíðunni með þeim texta.

Ein leið til að vinna bug á þessu er að smella á hlekk eftir href þess gildi, því jafnvel þegar tungumál síðunnar breytist ætti href-hlekkurinn samt að benda á sömu staðsetningu.

Með öðrum orðum, alþjóðavæðing ætti ekki að hafa áhrif á href tenglanna.

WebDriver hefur ekki sjálfstæðan og beinan hátt til að smella á hlekk eftir href gildi þess. Í staðinn verðum við að fá alla hlekkina á síðunni, draga út href eiginleikann og bera saman href gildi við það sem við búumst við.




Smelltu á Tengja eftir href

Segjum sem svo að við höfum eftirfarandi krækjur og við viljum smella á prófílhlekkinn

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

Þá getum við notað clickLinkByHref('Profile')

og þá mun ofangreind aðgerð fá alla hlekkina á síðunni og endurtekna í gegnum þá og þegar hún finnur hlekk sem inniheldur snið mun WebDriver smella á hlekkinn.

Athugið, ef við erum með nokkra krækjur með orðasniðinu, þá smellir ofangreind aðgerð alltaf á fyrsta krækjuna sem inniheldur orðasniðið. Við getum breytt ofangreindum kóða til að fela í sér hlekkina sem við viljum smella á:


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

Frekari lestur: