Kā rīkoties ar Web tabulu selēna WebDriver

Satura rādītājs:

Anonim

HTML tīmekļa tabulas lasīšana

Ir reizes, kad mums ir jāpiekļūst elementiem (parasti tekstiem), kas atrodas HTML tabulās. Tomēr tīmekļa dizainers ļoti reti sniedz ID vai nosaukuma atribūtu noteiktai tabulas šūnai. Tāpēc mēs nevaram izmantot parastās metodes, piemēram, "By.id ()", "By.name ()" vai "By.cssSelector ()". Šajā gadījumā visuzticamākā iespēja ir piekļūt tiem, izmantojot metodi "By.xpath ()".

Šajā apmācībā jūs uzzināsiet-

  • Kā rakstīt XPath tabulai
  • Piekļuve ligzdotajām tabulām
  • Atribūtu izmantošana kā predikāti
  • Īsceļš: Izmantojiet sadaļu Pārbaudīt elementu, lai piekļūtu selēna tabulām

Kā rakstīt XPath tabulai

Apsveriet tālāk redzamo HTML kodu.

Mēs izmantosim XPath, lai iegūtu šūnas iekšējo tekstu, kurā ir teksts "ceturtā šūna".

1. darbība - iestatiet vecāku elementu (tabula)

Webathriver XPath lokatori vienmēr sākas ar dubultu slīpsvītru uz priekšu "//" un pēc tam ar vecāku elementu . Tā kā mums ir darīšana ar tabulām, vecākajam elementam vienmēr jābūt tagam

. Tāpēc mūsu XPath lokatora pirmajai daļai jāsākas ar "// table".

2. solis - pievienojiet bērnu elementus

Elements, kas atrodas tieši zem

, ir , tāpēc mēs varam teikt, ka ir
"bērns". Un arī
ir vecāks. Visi pakārtotie elementi XPath tiek novietoti pa labi no vecāku elementa, atdalīti ar vienu slīpsvītru uz priekšu "/", piemēram, zemāk redzamais kods.

3. solis - pievienojiet predikātus

Elementā

ir divi tagi . Tagad mēs varam teikt, ka šie divi tagi ir bērni. Līdz ar to mēs varam teikt, ka ir abu elementu vecāks.

Vēl viena lieta, ko varam secināt, ir tā, ka abi

elementi ir brāļi un māsas. Brāļi un māsas attiecas uz bērna elementiem, kuriem ir viens un tas pats vecāks .

Lai nokļūtu

, nevis pirmajai. Ja mēs vienkārši uzrakstīsim “// table / tbody / tr”, mēs piekļūsim pirmajam tagam .

Tātad, kā tad piekļūt otrajam

? Atbilde uz to ir predikātu izmantošana .

Predikāti ir skaitļi vai HTML atribūti, kas ievietoti kvadrātiekavu pārī "[]", kas atšķir bērna elementu no tā brāļiem un māsām . Tā kā

, kam mums ir jāpiekļūst, ir otrais, tad kā predikātu izmantosim "[2]".

Ja mēs neizmantosim nevienu predikātu, XPath piekļūs pirmajam brālim. Tāpēc mēs varam piekļūt pirmajam

, izmantojot kādu no šiem XPath kodiem.

4. solis - pievienojiet veiksmīgos bērnu elementus, izmantojot piemērotus predikātus

Nākamais elements, kuram mums jāpiekļūst, ir otrais

pirmajā
, kuram mēs vēlamies piekļūt (tam, kuram ir teksts "ceturtā šūna"), mums vispirms ir jāpiekļūst otrajai
. Pielietojot principus, kurus esam iemācījušies no 2. un 3. darbības, mēs pabeigsim savu XPath kodu līdzīgu zemāk parādītajam.

Tagad, kad mums ir pareizs XPath lokators, mēs jau varam piekļūt vēlamajai šūnai un iegūt tās iekšējo tekstu, izmantojot zemāk esošo kodu. Tiek pieņemts, ka esat saglabājis HTML kodu iepriekš kā "newhtml.html" savā C diskā.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";WebDriver draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);String internalText = driver.findElement (By.xpath ("// tabula / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);vadītājs.iziet ();}}

Piekļuve ligzdotajām tabulām

Tie paši iepriekš apspriestie principi attiecas arī uz ligzdotajām tabulām. Ligzdotās tabulas ir tabulas, kas atrodas citā tabulā . Piemērs ir parādīts zemāk.

Lai piekļūtu šūnai ar tekstu "4-5-6", izmantojot iepriekšējās sadaļas "// vecāks / bērns" un predikātu jēdzienus, mums vajadzētu būt iespējai nākt klajā ar XPath kodu zemāk.

Tālāk norādītajam WebDriver kodam vajadzētu būt iespējai izgūt šūnas, kurai mēs piekļūstam, iekšējo tekstu.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";WebDriver draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);String internalText = driver.findElement (By.xpath ("// tabula / tbody / tr [2] / td [2] / tabula / tbody / tr / td [2]")). GetText ();System.out.println (innerText);vadītājs.iziet ();}

Zemāk redzamā izeja apstiprina, ka iekšējā tabula tika veiksmīgi piekļūta.

Atribūtu izmantošana kā predikāti

Ja elements HTML kodā ir ierakstīts tā, ka predikātam izmantojamo numuru ir ļoti grūti noteikt, tā vietā varam izmantot šī elementa unikālo atribūtu.

Tālāk sniegtajā piemērā šūna “No Ņujorkas līdz Čikāgai” atrodas dziļi Mercury Tours sākumlapas HTML kodā.

Šajā gadījumā kā predikātu mēs varam izmantot tabulas unikālo atribūtu (width = "270"). Atribūti tiek izmantoti kā predikāti, tos pirms prefiksu pievienojot ar @ simbolu . Iepriekš minētajā piemērā šūna "No Ņujorkas līdz Čikāgai" atrodas ceturtās

, un tāpēc mūsu XPath jābūt tādam, kā parādīts zemāk.

Atcerieties, ka, ievietojot XPath kodu Java, divkāršās pēdiņās "270" abās pēdiņās jāizmanto evakuācijas rakstzīmes aizmugures slīpsvītra "\", lai By.xpath () virknes arguments netiktu pārtraukts priekšlaicīgi .

Tagad mēs esam gatavi piekļūt šai šūnai, izmantojot zemāk esošo kodu.

public static void main (String [] args) {Virknes bāzeUrl = "http://demo.guru99.com/test/newtours/";WebDriver draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);String internalText = driver.findElement (Autors.xpath ("// tabula [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);vadītājs.iziet ();}

Īsceļš: Izmantojiet sadaļu Pārbaudīt elementu, lai piekļūtu selēna tabulām

Ja elementa numuru vai atribūtu ir ārkārtīgi grūti vai neiespējami iegūt, ātrākais veids, kā ģenerēt XPath kodu, ir izmantot elementa pārbaudi.

Apsveriet zemāk redzamo piemēru no Mercury Tours mājas lapas.

1. solis

Izmantojiet Firebug, lai iegūtu XPath kodu.

2. solis

Meklējiet pirmo “tabulas” vecāku elementu un izdzēsiet visu, kas atrodas pa kreisi no tā.

3. solis

Atlikušo koda daļu prefiksējiet ar dubultu slīpsvītru "//" un nokopējiet to savā WebDriver kodā.

Zemāk esošais WebDriver kods varēs veiksmīgi izgūt tā elementa iekšējo tekstu, kuram mēs piekļūstam.

public static void main (String [] args) {Virknes bāzeUrl = "http://demo.guru99.com/test/newtours/";WebDriver draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);String internalText = driver.findElement (Autors.xpath ("// tabula / tbody / tr / td [2]"+ "// tabula / tbody / tr [4] / td /"+ "table / tbody / tr / td [2] /"+ "table / tbody / tr [2] / td [1] /"+ "tabula [2] / tbody / tr [3] / td [2] / fonts")).getText ();System.out.println (innerText);vadītājs.iziet ();}

Kopsavilkums

  • By.xpath () parasti izmanto, lai piekļūtu tabulas elementiem.
  • Ja elements HTML kodā ir ierakstīts tā, ka predikātam izmantojamo numuru ir ļoti grūti noteikt, tā vietā varam izmantot šī elementa unikālo atribūtu.
  • Atribūti tiek izmantoti kā predikāti, pirms to pievienojot @ simbolu.
  • Izmantojiet sadaļu Pārbaudīt elementu, lai piekļūtu selēna tabulām