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
, kuram mēs vēlamies piekļūt (tam, kuram ir teksts "ceturtā šūna"), mums vispirms ir jāpiekļūst otrajai
, 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
. 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
pirmajā
, 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.