Linkszöveg és részleges hivatkozás szövege be Selenium

Mit tartalmaz a hivatkozás szövege Selenium?

A Link szöveg be Selenium a weboldalon található hiperhivatkozások azonosítására szolgál. Meghatározása horgonycímke segítségével történik. A hiperhivatkozások létrehozásához egy weboldalon használhatunk egy horgonycímkét, amelyet a szöveg hivatkozás követ.

Kritériumnak megfelelő linkek

A hivatkozások a linkszöveg pontos vagy részleges egyezésével érhetők el. Az alábbi példák olyan forgatókönyveket mutatnak be, ahol több egyezés is létezne, és elmagyarázzák, hogyan kezelné őket a WebDriver.

Ebben az oktatóanyagban megismerjük a hivatkozások megtalálásának és elérésének elérhető módszereit a Webdriver segítségével. Ezenkívül megvitatunk néhány gyakori problémát, amelyekkel a hivatkozások elérése során szembesülünk, és tovább tárgyaljuk a megoldásuk módját.

Töltse ki a hivatkozás szövegét Selenium – By.linkText()

A hivatkozások elérése a pontos linkszöveg használatával a By.linkText() metóduson keresztül történik. Ha azonban van két hivatkozás, amelyeknek ugyanaz a hivatkozás szövege, akkor ez a módszer csak az elsőhöz fér hozzá. Vegye figyelembe az alábbi HTML-kódot

Link szöveg be Selenium–By.LinkText()

Link szöveg be Selenium–By.LinkText()

Amikor megpróbálja futtatni az alábbi WebDriver kódot, az első „kattintson ide” hivatkozásra fog hozzáférni

Link szöveg be Selenium–By.LinkText()

Kód:

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.chrome.ChromeDriver;		

public class MyClass {				
    		
    public static void main(String[] args) {									
        String baseUrl = "https://demo.guru99.com/test/link.html";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        driver.findElement(By.linkText("click here")).click();					
        System.out.println("title of page is: " + driver.getTitle());							
        driver.quit();			
    }		

}			

Íme, hogyan működik -

Link szöveg be Selenium–By.LinkText()

Ennek eredményeként automatikusan a Google-hoz kerül.

Link szöveg be Selenium–By.LinkText()

Részleges hivatkozás szövegének kitöltése Selenium – By.partialLinkText()

A hivatkozásokhoz a hivatkozásszöveg egy részével való hozzáférés a következő használatával történik By.partialLinkText() módszer. Ha olyan részleges linkszöveget ad meg, amely több egyezést tartalmaz, akkor csak az első egyezés lesz elérhető. Vegye figyelembe az alábbi HTML-kódot.

Részleges hivatkozás szövege be Selenium – By.partialLinkText()

 Részleges hivatkozás szövege be Selenium – By.partialLinkText()

Amikor végrehajtja az alábbi WebDriver kódot, továbbra is a Google oldalára kerül.

 Részleges hivatkozás szövege be Selenium – By.partialLinkText()

Kód:

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.chrome.ChromeDriver;		

public class P1 {				
    		
    public static void main(String[] args) {									
        String baseUrl = "https://demo.guru99.com/test/accessing-link.html";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        driver.findElement(By.partialLinkText("here")).click();					
        System.out.println("Title of page is: " + driver.getTitle());							
        driver.quit();			
    }		
}

Részleges hivatkozás szövege be Selenium – By.partialLinkText()

Hogyan szerezhet be több hivatkozást ugyanazzal a linkszöveggel

Tehát hogyan lehet megkerülni a fenti problémát? Azokban az esetekben, amikor több link is ugyanazzal a linkszöveggel rendelkezik, és az elsőtől eltérő hivatkozásokat szeretnénk elérni, hogyan tegyünk?

Ilyen esetekben általában különböző lokátorokat használnak, nevezetesen… By.xpath(), By.cssSelector() vagy By.tagName()-t.

A leggyakrabban használt a By.xpath(). Ez a legmegbízhatóbb, de bonyolultnak és olvashatatlannak is tűnik.

A hivatkozásszöveg kis- és nagybetűk megkülönböztetése

A linkszöveg kis- és nagybetűk érzékenysége

A paraméterek a By.linkText() és a By.partialLinkText() mindkettő megkülönbözteti a kis- és nagybetűket, ami azt jelenti, hogy a nagybetűk használata számít. Például be Mercury A Tours honlapján két link található, amelyek az „egis” szöveget tartalmazzák – az egyik a felső menüben található „REGISZTRÁCIÓ”, a másik pedig az oldal jobb alsó sarkában található „Regisztráció itt” link.

A linkszöveg kis- és nagybetűk érzékenysége

Bár mindkét hivatkozás tartalmazza az „egis” karaktersorozatot, az egyik a „By.partialLinkText()” metódus külön-külön éri el ezt a két hivatkozást a karakterek nagybetűs írásmódjától függően. Lásd az alábbi mintakódot.

A linkszöveg kis- és nagybetűk érzékenysége

Kód

public static void main(String[] args) {								
        String baseUrl = "https://demo.guru99.com/test/newtours/";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        String theLinkText = driver.findElement(By					
                .partialLinkText("egis"))			
                .getText();		
        System.out.println(theLinkText);					
        theLinkText = driver.findElement(By					
                .partialLinkText("EGIS"))			
                .getText();		
        System.out.println(theLinkText);					

        driver.quit();			

    }

Hivatkozások egy blokkon kívül és belül

A legújabb HTML5 szabvány lehetővé teszi a címkék elhelyezését blokkszintű címkéken belül és kívül is, mint például a , , vagy . A „By.linkText()” és „By.partialLinkText()” metódusok hozzáférhetnek egy hivatkozáshoz, amely ezeken a blokkszintű elemeken kívül és belül található. Vegye figyelembe az alábbi HTML-kódot.

Hivatkozások egy blokkon kívül és belül

Hivatkozások egy blokkon kívül és belül

Az alábbi WebDriver kód mindkét hivatkozást a By.partialLinkText() metódussal éri el.

Hivatkozások egy blokkon kívül és belül

Kód:

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.chrome.ChromeDriver;		

public class MyClass {				
    		
    public static void main(String[] args) {									
        String baseUrl = "https://demo.guru99.com/test/block.html";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        driver.findElement(By.partialLinkText("Inside")).click();					
        System.out.println(driver.getTitle());					
        driver.navigate().back();			
        driver.findElement(By.partialLinkText("Outside")).click();					
        System.out.println(driver.getTitle());					
        driver.quit();			
    }		
}		

A fenti kimenet megerősíti, hogy mindkét hivatkozáshoz sikeresen hozzáfértek, mert a megfelelő oldalcímüket megfelelően lekérték.

Összegzésként

  • A hivatkozások elérése a click() metódussal történik.
  • A bármely WebElement számára elérhető helymeghatározókon kívül a hivatkozásoknak is vannak linkszöveg alapú helymeghatározói:
    • By.linkText() – megkeresi a hivatkozásokat a hivatkozás paraméterként megadott szövegének pontos egyezése alapján.
    • By.partialLinkText() – megkeresi a hivatkozásokat a hivatkozás szövegének részleges szövegegyezése alapján.
  • Mindkét fenti lokátor megkülönbözteti a kis- és nagybetűket.
  • Ha több egyezés is van, a By.linkText() és a By.partialLinkText() csak az első egyezést választja ki. Azokban az esetekben, amikor több hivatkozás is található ugyanazzal a hivatkozás szövegével, más xpath, CSS-alapú lokátorokat használnak.
  • A findElements() & By.tagName(“a”) metódus megkeresi az oldalon lévő összes olyan elemet, amely megfelel a helymeghatározási feltételeknek
  • A hivatkozások a By.linkText() és a By.partialLinkText() segítségével érhetők el, függetlenül attól, hogy blokkszintű elemeken belül vagy kívül vannak.

Foglald össze ezt a bejegyzést a következőképpen: