Kaip tvarkyti žiniatinklio lentelę „Selenium WebDriver“

Turinys:

Anonim

HTML žiniatinklio lentelės skaitymas

Kartais mums reikia prieiti prie elementų (dažniausiai tekstų), kurie yra HTML lentelėse. Tačiau labai retai interneto dizaineris pateikia tam tikros lentelės langelio ID arba vardo atributą. Todėl negalime naudoti įprastų metodų, tokių kaip „By.id ()“, „By.name ()“ arba „By.cssSelector ()“. Šiuo atveju patikimiausias variantas yra prieiga prie jų naudojant „By.xpath ()“ metodą.

Šioje pamokoje sužinosite

  • Kaip parašyti XPath lentelei
  • Prieiga prie įdėtų lentelių
  • Atributų naudojimas kaip predikatų
  • Spartusis klavišas: naudokite „Tikrinti elementą“, kad pasiektumėte seleno lenteles

Kaip parašyti XPath lentelei

Apsvarstykite toliau pateiktą HTML kodą.

Norėdami gauti vidinį langelio tekstą, kuriame yra tekstas „ketvirtoji ląstelė“, naudosime XPath.

1 žingsnis - nustatykite tėvų elementą (lentelę)

„Webathriver“ „XPath“ lokatoriai visada prasideda dvigubu pasviruoju pasviruoju brūkšniu „//“, o po to - pagrindiniu elementu . Kadangi mes susiduriame su lentelėmis, pagrindinis elementas visada turėtų būti žyma

. Pirmoji XPath lokatoriaus dalis turėtų prasidėti „// lentelė“.

2 žingsnis - pridėkite vaiko elementų

Elementas tiesiai po

yra , todėl galime sakyti, kad yra
vaikas. Be to,
yra „tėvas“. Visi antriniai elementai „XPath“ yra dedami į dešinę nuo jų pirminio elemento, atskirti vienu į priekį pasviruoju brūkšniu „/“, kaip žemiau pateiktas kodas.

3 žingsnis - pridėkite predikatus

Elemente

yra dvi žymos . Dabar galime sakyti, kad šios dvi žymos yra „vaikai“. Taigi galime sakyti, kad yra abiejų elementų tėvas.

Kitas dalykas, kurį galime padaryti, yra tai, kad du

elementai yra broliai ir seserys. Broliai ar seserys nurodo vaiko elementus, turinčius tą patį tėvą .

Norėdami patekti į

, o ne pirmąjį. Jei paprasčiausiai parašysime „// table / tbody / tr“, tada prieisime prie pirmosios žymos.

Taigi, kaip tada pasiekti antrąjį

? Atsakymas į tai yra naudoti „ Predicates“ .

Predikatai yra skaičiai arba HTML atributai, įterpti į laužtinių skliaustų pora „[]“, kurie skiria vaiko elementą nuo jo brolių ir seserų . Kadangi

, prie kurio turime prisijungti, yra antrasis, kaip predikatą naudosime „[2]“.

Jei nenaudosime jokio predikato, „XPath“ pasieks pirmąjį brolį. Todėl mes galime pasiekti pirmąjį

naudodami bet kurį iš šių XPath kodų.

4 žingsnis - pridėkite sėkmingus vaiko elementus naudodami tinkamus predikatus

Kitas elementas, prie kurio turime prisijungti, yra antrasis

, kurį norime pasiekti (tą, kuriame yra tekstas „ketvirtoji ląstelė“), pirmiausia turime pasiekti antrąjį
. Taikydami principus, kurių išmokome atlikdami 2 ir 3 žingsnius, užbaigsime savo XPath kodą panašų į žemiau pateiktą.

Dabar, kai turime tinkamą „XPath“ lokatorių, mes jau galime pasiekti norimą langelį ir gauti jo vidinį tekstą naudodami žemiau pateiktą kodą. Laikoma, kad aukščiau esantį HTML kodą C diske išsaugojote kaip „newhtml.html“.

public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();vairuotojas.get (baseUrl);Eilutė internalText = driver.findElement (By.xpath ("// lentelė / tbody / tr [2] / td [2]")). GetText ();System.out.println (internalText);vairuotojas.mesti ();}}

Prieiga prie įdėtų lentelių

Tie patys aukščiau aptarti principai taikomi įdėtoms lentelėms. Įterptosios lentelės yra lentelės, esančios kitoje lentelėje . Toliau pateiktas pavyzdys.

Norėdami pasiekti langelį su tekstu „4-5-6“ naudodami ankstesnio skyriaus „// tėvas / vaikas“ ir predikatų sąvokas, turėtume sugebėti sugalvoti žemiau esantį „XPath“ kodą.

Žemiau pateiktas „WebDriver“ kodas turėtų sugebėti nuskaityti vidinį langelio, prie kurio prieiname, tekstą.

public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();vairuotojas.get (baseUrl);Eilutė internalText = driver.findElement (By.xpath ("// lentelė / tbody / tr [2] / td [2] / lentelė / tbody / tr / td [2]")). GetText ();System.out.println (internalText);vairuotojas.mesti ();}

Žemiau pateiktas išvestis patvirtina, kad buvo sėkmingai pasiekta vidinė lentelė.

Atributų naudojimas kaip predikatų

Jei elementas yra parašytas giliai HTML kode taip, kad predikatui naudojamą skaičių nustatyti labai sunku, vietoj to galime naudoti unikalų šio elemento atributą.

Toliau pateiktame pavyzdyje langelis „Niujorkas į Čikagą“ yra giliai į „Mercury Tours“ pagrindinio puslapio HTML kodą.

Tokiu atveju kaip predikatą galime naudoti lentelės unikalų atributą (plotis = "270"). Atributai naudojami kaip predikatai, prieš juos pridedant simbolį @ . Ankstesniame pavyzdyje langelis „Niujorkas į Čikagą“ yra pirmame ketvirtojo

, todėl mūsų XPath turėtų būti toks, kaip parodyta žemiau.

Atminkite, kad įdėdami „XPath“ kodą į „Java“, mes turėtume naudoti pabėgimo ženklo atgalinį pasvirąjį brūkšnį „\“ dviguboms kabutėms abiejose „270“ pusėse, kad By.xpath () eilutės argumentas nebūtų nutraukiamas anksčiau .

Dabar esame pasirengę pasiekti tą langelį naudodami toliau pateiktą kodą.

public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/newtours/";„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();vairuotojas.get (baseUrl);String internalText = driver.findElement (Autorius.xpath ("// lentelė [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (internalText);vairuotojas.mesti ();}

Spartusis klavišas: naudokite „Tikrinti elementą“, kad pasiektumėte seleno lenteles

Jei elemento numerį ar atributą gauti yra labai sunku arba jo neįmanoma, greičiausias būdas sugeneruoti XPath kodą yra „Element“ tikrinimas.

Apsvarstykite žemiau pateiktą pavyzdį iš „Mercury Tours“ pagrindinio puslapio.

1 žingsnis

Norėdami gauti XPath kodą, naudokite „Firebug“.

2 žingsnis

Ieškokite pirmojo „lentelės“ pirminio elemento ir ištrinkite viską kairėje jo pusėje.

3 žingsnis

Likusią kodo dalį priešais pažymėkite dvigubu pasviruoju pasviruoju brūkšniu „//“ ir nukopijuokite ją į savo „WebDriver“ kodą.

Žemiau pateiktas „WebDriver“ kodas galės sėkmingai nuskaityti vidinį elemento, prie kurio prieiname, tekstą.

public static void main (String [] argumentuoja) {Eilutė baseUrl = "http://demo.guru99.com/test/newtours/";„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();vairuotojas.get (baseUrl);String internalText = driver.findElement (Autorius.xpath ("// lentelė / tbody / tr / td [2]"+ "// lentelė / tbody / tr [4] / td /"+ "table / tbody / tr / td [2] /"+ "table / tbody / tr [2] / td [1] /"+ "lentelė [2] / tbody / tr [3] / td [2] / šriftas")).getText ();System.out.println (internalText);vairuotojas.mesti ();}

Santrauka

  • By.xpath () paprastai naudojamas norint pasiekti lentelės elementus.
  • Jei elementas yra parašytas giliai HTML kode taip, kad predikatui naudojamą skaičių nustatyti labai sunku, vietoj to galime naudoti unikalų šio elemento atributą.
  • Atributai naudojami kaip predikatai, prieš juos pridedant simbolį @.
  • Norėdami pasiekti selenio lenteles, naudokite elementą „Tikrinti elementą“