Raskite elementus pagal nuorodos tekstą & Dalinis nuorodos tekstas „Selenium Webdriver“

Turinys:

Anonim

Kas yra nuorodos tekstas selene?

Selen“ nuorodos tekstas naudojamas hipersaitams tinklalapyje identifikuoti. Tai nustatoma inkaro žymės pagalba. Norėdami sukurti hipersaitus tinklalapyje, galime naudoti inkaro žymą, po kurios yra nuoroda Tekstas.

Nuorodos, atitinkančios kriterijų

Nuorodas galima pasiekti naudojant tikslią arba dalinę jų nuorodų teksto atitiktį. Toliau pateiktuose pavyzdžiuose pateikiami scenarijai, kai būtų kelios atitikties, ir paaiškinama, kaip „WebDriver“ elgsis su jomis.

Šioje pamokoje sužinosime esamus metodus, kaip rasti ir pasiekti nuorodas naudojant „Webdriver“. Be to, aptarsime keletą bendrų problemų, su kuriomis susiduriama prisijungiant prie nuorodų, ir toliau aptarsime, kaip jas išspręsti.

Štai ką jūs sužinosite

  • Prieiga prie nuorodų naudojant tikslią teksto atitiktį: By.linkText ()
  • Prieiga prie nuorodų naudojant dalinę teksto atitiktį: By.partialLinkText ()
  • Kaip gauti kelias nuorodas su tuo pačiu nuorodos tekstu
  • Didžiosios ir mažosios raidės nuorodos tekstui
  • Nuorodos bloko išorėje ir viduje

Prieiga prie nuorodų naudojant tikslią teksto atitiktį: By.linkText ()

Prieiga prie nuorodų naudojant jų tikslų tekstą atliekama naudojant By.linkText () metodą . Tačiau jei yra dvi nuorodos, kurių nuorodų tekstas yra tas pats, šis metodas pasieks tik pirmąją. Apsvarstykite toliau pateiktą HTML kodą

Kai bandysite paleisti žemiau esantį „WebDriver“ kodą, pasieksite pirmąją nuorodą „spustelėkite čia“

Kodas:

importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.chrome.ChromeDriver;viešoji klasė „MyClass“ {public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");„WebDriver“ tvarkyklė = nauja „ChromeDriver“ ();vairuotojas.get (baseUrl);driver.findElement (By.linkText ("spustelėkite čia")). spustelėkite ();System.out.println ("puslapio pavadinimas yra: + tvarkyklė.getTitle ());vairuotojas.mesti ();}}

Štai kaip tai veikia-

Todėl jūs būsite automatiškai nukreiptas į „Google“.

Prieiga prie nuorodų naudojant dalinę teksto atitiktį: By.partialLinkText ()

Prieiga prie nuorodų naudojant jų nuorodos teksto dalį atliekama naudojant metodą By.partialLinkText () . Jei nurodysite dalinį nuorodos tekstą, kuriame yra kelios atitiktys, bus pasiekiama tik pirmoji atitiktis. Apsvarstykite toliau pateiktą HTML kodą.

Kai vykdysite žemiau pateiktą „WebDriver“ kodą, vis tiek būsite nukreipti į „Google“.

Kodas:

importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.chrome.ChromeDriver;viešoji P1 klasė {public static void main (String [] argumentuoja) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");„WebDriver“ tvarkyklė = nauja „ChromeDriver“ ();vairuotojas.get (baseUrl);driver.findElement (By.partialLinkText ("čia")). spustelėkite ();System.out.println ("Puslapio pavadinimas yra: + tvarkyklė.getTitle ());vairuotojas.mesti ();}}

Kaip gauti kelias nuorodas su tuo pačiu nuorodos tekstu

Taigi, kaip apeiti minėtą problemą? Tais atvejais, kai yra keli saitai su tuo pačiu nuorodos tekstu ir mes norime pasiekti kitas nuorodas, nei pirmoji, kaip tai padaryti?

Tokiais atvejais paprastai naudojami skirtingi lokatoriai, ty… By.xpath (), By.cssSelector () arba By.tagName ().

Dažniausiai naudojamas By.xpath (). Tai patikimiausia, tačiau atrodo sudėtinga ir neskaitoma.

Didžiosios ir mažosios raidės nuorodos tekstui

By.linkText () ir By.partialLinkText () parametruose didžiosios ir mažosios raidės, vadinasi, didžiosios raidės yra svarbios. Pavyzdžiui, „Mercury Tours“ pagrindiniame puslapyje yra dvi nuorodos, kuriose yra tekstas „egis“ - viena yra nuoroda „REGISTRUOTI“, randama viršutiniame meniu, o kita - nuoroda „Registruokis čia“, esanti apatiniame dešiniajame kampe. puslapio.

Nors abiejose nuorodose yra simbolių seka „egis“, vienas iš jų yra „By.partialLinkText ()“ metodas, kuris pasieks šias dvi nuorodas atskirai, atsižvelgiant į didžiųjų raidžių rašymą. Žiūrėkite toliau pateiktą pavyzdinį kodą.

Kodas

public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");„WebDriver“ tvarkyklė = nauja „ChromeDriver“ ();vairuotojas.get (baseUrl);String theLinkText = driver.findElement (Autorius.partialLinkText („egis“)).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (Autorius.partialLinkText („EGIS“)).getText ();System.out.println (theLinkText);vairuotojas.mesti ();}

Nuorodos bloko išorėje ir viduje

Naujausias HTML5 standartas leidžia žymas patalpinti bloko lygio žymų, tokių kaip

,

ar

, viduje ir išorėje. Metodai „By.linkText ()“ ir „By.partialLinkText ()“ gali pasiekti nuorodą, esančią už šių bloko lygio elementų išorės ir viduje. Apsvarstykite toliau pateiktą HTML kodą.

Žemiau pateiktas „WebDriver“ kodas pasiekia abi šias nuorodas naudodamas By.partialLinkText () metodą.

Kodas:

importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.chrome.ChromeDriver;viešoji klasė „MyClass“ {public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");„WebDriver“ tvarkyklė = nauja „ChromeDriver“ ();vairuotojas.get (baseUrl);driver.findElement (By.partialLinkText ("Viduje")). spustelėkite ();System.out.println (tvarkyklė.getTitle ());vairuotojas.navigate (). back ();driver.findElement (By.partialLinkText ("Išorė")). spustelėkite ();System.out.println (tvarkyklė.getTitle ());vairuotojas.mesti ();}}

Aukščiau pateiktas išvestis patvirtina, kad abi nuorodos buvo sėkmingai pasiektos, nes jų atitinkami puslapių pavadinimai buvo gauti teisingai.

Santrauka

  • Nuorodos pasiekiamos naudojant click () metodą.
  • Be bet kuriai „WebElement“ prieinamų lokatorių, nuorodos taip pat turi nuorodų tekstu pagrįstus lokatorius:
    • By.linkText () - suranda nuorodas pagal tikslią nuorodos teksto atitiktį, pateiktą kaip parametrą.
    • By.partialLinkText () - suranda nuorodas pagal dalinę nuorodos teksto teksto atitiktį.
  • Abu aukščiau nurodyti lokatoriai turi didžiosios ir mažosios raidės.
  • Jei yra kelios atitiktys, By.linkText () ir By.partialLinkText () pasirinks tik pirmąją atitiktį. Tokiais atvejais, kai yra kelios nuorodos su tuo pačiu nuorodos tekstu, naudojami kiti lokalizatoriai, pagrįsti xpath, CSS.
  • Metodas „findElements ()“ ir „By.tagName“ („a“) suranda visus puslapio elementus, atitinkančius lokatoriaus kriterijus
  • Nuorodas gali pasiekti „By.linkText“ () ir „By.partialLinkText“ (), neatsižvelgiant į tai, ar jos yra bloko lygio elementuose, ar už jų ribų.