Atrodiet elementus pēc saites teksta & Daļējs saites teksts selēna tīmekļa draiverī

Satura rādītājs:

Anonim

Kas ir saites teksts selēnā?

Saite Teksts Selēns tiek izmantota, lai noteiktu hipersaites uz mājas lapā. To nosaka ar enkura taga palīdzību. Lai izveidotu hipersaites tīmekļa lapā, mēs varam izmantot enkura tagu, kam seko saite Teksts.

Saites, kas atbilst kritērijam

Saitēm var piekļūt, izmantojot precīzu vai daļēju to saites teksta atbilstību. Tālāk sniegtajos piemēros sniegti scenāriji, kad pastāv vairākas atbilstības, un tie izskaidro, kā WebDriver rīkotos ar tiem.

Šajā apmācībā mēs uzzināsim pieejamās metodes, kā atrast un piekļūt saitēm, izmantojot Webdriver. Mēs arī apspriedīsim dažas no biežāk sastopamajām problēmām, saskaroties, piekļūstot saitēm, un tālāk apspriedīsim, kā tās atrisināt.

Lūk, ko jūs uzzināsiet-

  • Piekļuve saitēm, izmantojot precīzu teksta atbilstību: By.linkText ()
  • Piekļuve saitēm, izmantojot daļēju teksta atbilstību: By.partialLinkText ()
  • Kā iegūt vairākas saites ar vienu un to pašu saites tekstu
  • Saites teksta reģistrjutīgums
  • Saites bloka ārpusē un iekšpusē

Piekļuve saitēm, izmantojot precīzu teksta atbilstību: By.linkText ()

Piekļuve saitēm, izmantojot precīzu saites tekstu, tiek veikta, izmantojot metodi By.linkText () . Tomēr, ja ir divas saites, kurām ir tāds pats saites teksts, šī metode piekļūs tikai pirmajai. Apsveriet tālāk redzamo HTML kodu

Mēģinot palaist zemāk esošo WebDriver kodu, jūs piekļūsit pirmajai saitei "noklikšķiniet šeit"

Kods:

importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();draiveris.get (baseUrl);driver.findElement (By.linkText ("noklikšķiniet šeit")). noklikšķiniet ();System.out.println ("lapas nosaukums ir: + draiveris.getTitle ());vadītājs.iziet ();}}

Lūk, kā tas darbojas-

Tā rezultātā jūs tiksiet automātiski novirzīts uz Google.

Piekļuve saitēm, izmantojot daļēju teksta atbilstību: By.partialLinkText ()

Piekļuve saitēm, izmantojot daļu no to saites teksta, tiek veikta, izmantojot metodi By.partialLinkText () . Ja norādāt daļēju saites tekstu, kurā ir vairākas atbilstības, tiks piekļūta tikai pirmajai atbilstībai. Apsveriet tālāk redzamo HTML kodu.

Veicot zemāk redzamo WebDriver kodu, jūs tiksiet novirzīts uz Google.

Kods:

importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase P1 {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();draiveris.get (baseUrl);driver.findElement (By.partialLinkText ("šeit")). noklikšķiniet ();System.out.println ("Lapas nosaukums ir: + draiveris.getTitle ());vadītājs.iziet ();}}

Kā iegūt vairākas saites ar vienu un to pašu saites tekstu

Tātad, kā apiet iepriekš minēto problēmu? Gadījumos, kad ir vairākas saites ar vienu un to pašu saites tekstu un mēs vēlamies piekļūt citām saitēm, nevis pirmajai, kā mēs to darīsim?

Šādos gadījumos parasti tiek izmantoti dažādi lokatori, proti ... By.xpath (), By.cssSelector () vai By.tagName ().

Visbiežāk tiek izmantots By.xpath (). Tas ir visuzticamākais, bet izskatās sarežģīts un arī neizlasāms.

Saites teksta reģistrjutīgums

By.linkText () un By.partialLinkText () parametri ir reģistrjutīgi, tas nozīmē, ka lielajiem burtiem ir nozīme. Piemēram, Mercury Tours mājas lapā ir divas saites, kurās ir teksts "egis" - viena ir augšējā izvēlnē atrodamā saite "REĢISTRĒT", bet otra - apakšējā labajā pusē esošā saite "Reģistrēties šeit". lapas.

Lai gan abās saitēs ir rakstzīmju secība "egis", viena no tām ir metode "By.partialLinkText ()", šīm abām saitēm piekļūstot atsevišķi atkarībā no rakstzīmju lielo burtu lietojuma. Skatiet koda paraugu zemāk.

Kods

public static void main (String [] args) {Virknes bāzeUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();draiveris.get (baseUrl);String theLinkText = driver.findElement (Autors.partialLinkText ("egis")).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (Autors.partialLinkText ("EGIS").getText ();System.out.println (theLinkText);vadītājs.iziet ();}

Saites bloka ārpusē un iekšpusē

Jaunākais HTML5 standarts ļauj tagus ievietot bloka līmeņa tagu iekšpusē un ārpusē, piemēram,

,

vai

. Metodes "By.linkText ()" un "By.partialLinkText ()" var piekļūt saitei, kas atrodas ārpus šiem bloku līmeņa elementiem un to iekšpusē. Apsveriet tālāk redzamo HTML kodu.

Zemāk redzamais WebDriver kods piekļūst abām šīm saitēm, izmantojot metodi By.partialLinkText ().

Kods:

importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();draiveris.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). noklikšķiniet ();System.out.println (draiveris.getTitle ());draiveris.navigate (). back ();driver.findElement (By.partialLinkText ("Ārpusē")). noklikšķiniet ();System.out.println (draiveris.getTitle ());vadītājs.iziet ();}}

Iepriekš izvads apstiprina, ka abām saitēm tika veiksmīgi piekļūt, jo to attiecīgie lapu nosaukumi tika izgūti pareizi.

Kopsavilkums

  • Saitēm piekļūst, izmantojot metodi click ().
  • Papildus vietnēm, kas ir pieejamas jebkuram WebElement, saitēm ir arī uz saitēm balstīti lokatori:
    • By.linkText () - atrod saites, pamatojoties uz precīzu saites teksta atbilstību, kas norādīts kā parametrs.
    • By.partialLinkText () - atrod saites, pamatojoties uz daļēju saites teksta atbilstību tekstam.
  • Abi iepriekš minētie lokatori ir reģistrjutīgi.
  • Ja ir vairākas atbilstības, By.linkText () un By.partialLinkText () atlasīs tikai pirmo atbilstību. Šādos gadījumos, kad ir vairākas saites ar vienu un to pašu saites tekstu, tiek izmantoti citi lokatori, kuru pamatā ir xpath, CSS.
  • Metode findElements () un By.tagName ("a") atrod visus lapas elementus, kas atbilst lokatora kritērijiem
  • Saitēm var piekļūt, izmantojot By.linkText () un By.partialLinkText () neatkarīgi no tā, vai tās atrodas bloku līmeņa elementos vai ārpus tiem.