Det er tider når vi trenger tilgang til elementer (vanligvis tekster) som er innenfor HTML-tabeller. Imidlertid er det svært sjelden for en webdesigner å oppgi en id eller et attributt til en bestemt celle i tabellen. Derfor kan vi ikke bruke de vanlige metodene som "By.id ()", "By.name ()" eller "By.cssSelector ()". I dette tilfellet er det mest pålitelige alternativet å få tilgang til dem ved hjelp av "By.xpath ()" -metoden.
I denne veiledningen vil du lære-
Hvordan skrive XPath for Table
Få tilgang til nestede tabeller
Bruke attributter som predikater
Snarvei: Bruk inspiserelement for tilgang til bord i selen
Hvordan skrive XPath for Table
Tenk på HTML-koden nedenfor.
Vi bruker XPath for å få den indre teksten i cellen som inneholder teksten "fjerde celle".
Trinn 1 - Sett foreldreelementet (tabell)
XPath-lokatorer i WebDriver starter alltid med en dobbel skråstrek "//" og deretter etterfulgt av det overordnede elementet . Siden vi har å gjøre med tabeller, bør det overordnede elementet alltid være -koden. Den første delen av XPath-locatoren vår bør derfor starte med "// table".
Trinn 2 - Legg til underordnede elementer
Elementet umiddelbart under er
, så vi kan si at
er "barnet" til
. Og også, er "foreldre" til
. Alle underordnede elementer i XPath er plassert til høyre for det overordnede elementet, atskilt med ett skråstrek "/" som koden vist nedenfor.
Trinn 3 - Legg til predikater
-elementet inneholder to
-koder. Vi kan nå si at disse to
kodene er "barn" til
. Derfor kan vi si at
er overordnet til begge
-elementene.
En annen ting vi kan konkludere med er at de to
elementene er søsken. Søsken refererer til barnelementer som har samme foreldre .
For å komme til
vi ønsker tilgang (den med teksten "fjerde celle"), må vi først få tilgang til den andre
og ikke den første. Hvis vi bare skriver "// table / tbody / tr", får vi tilgang til den første
-koden.
Så hvordan får vi tilgang til den andre
da? Svaret på dette er å bruke Predicates .
Predikater er tall eller HTML-attributter omgitt av et par firkantede parenteser []] som skiller et underordnet element fra søsknene . Siden
vi trenger tilgang er den andre, skal vi bruke "[2]" som predikat.
Hvis vi ikke bruker noe predikat, vil XPath få tilgang til det første søskenbarnet. Derfor kan vi få tilgang til den første
ved hjelp av en av disse XPath-kodene.
Trinn 4 - Legg til de etterfølgende barnelementene ved hjelp av passende predikater
Det neste elementet vi trenger for å få tilgang til er det andre
. Ved å bruke prinsippene vi har lært fra trinn 2 og 3, vil vi fullføre XPath-koden slik at den er vist nedenfor.
Nå som vi har riktig XPath-locator, kan vi allerede få tilgang til cellen vi ønsket og få den indre teksten ved hjelp av koden nedenfor. Det forutsetter at du har lagret HTML-koden ovenfor som "newhtml.html" i C-stasjonen.
De samme prinsippene som er diskutert ovenfor gjelder for nestede tabeller. Nestede tabeller er tabeller i en annen tabell . Et eksempel er vist nedenfor.
For å få tilgang til cellen med teksten "4-5-6" ved bruk av "// foreldre / barn" og predikatkonsepter fra forrige seksjon, bør vi kunne komme med XPath-koden nedenfor.
WebDriver-koden nedenfor skal kunne hente den indre teksten i cellen som vi får tilgang til.
Utdataene nedenfor bekrefter at den indre tabellen var vellykket tilgjengelig.
Bruke attributter som predikater
Hvis elementet er skrevet dypt inne i HTML-koden slik at tallet som skal brukes for predikatet er veldig vanskelig å bestemme, kan vi bruke elementets unike attributt i stedet.
I eksemplet nedenfor ligger "New York til Chicago" -cellen dypt inne i Mercury Tours hjemmeside HTML-kode.
I dette tilfellet kan vi bruke tabellens unike attributt (bredde = "270") som predikat. Attributter brukes som predikater ved å føre dem med @ -symbolet . I eksemplet ovenfor ligger "New York til Chicago" -cellen i den første
av den fjerde
, og derfor bør vår XPath være som vist nedenfor.
Husk at når vi setter XPath-koden i Java, bør vi bruke escape-tegnet bakover skråstrek "\" for de dobbelte anførselstegnene på begge sider av "270", slik at strengargumentet til By.xpath () ikke blir avsluttet for tidlig .
Vi er nå klare til å få tilgang til den cellen ved hjelp av koden nedenfor.
Snarvei: Bruk inspiserelement for tilgang til bord i selen
Hvis antallet eller attributtet til et element er ekstremt vanskelig eller umulig å få tak i, er den raskeste måten å generere XPath-koden ved hjelp av Inspect Element.
Tenk på eksemplet nedenfor fra Mercury Tours hjemmeside.
Trinn 1
Bruk Firebug for å skaffe XPath-koden.
Steg 2
Se etter det første "tabell" -elementet og slett alt til venstre for det.
Trinn 3
Prefiks den gjenværende delen av koden med dobbel skråstrek "//" og kopier den over til WebDriver-koden.
WebDriver-koden nedenfor vil kunne hente den indre teksten til elementet vi får tilgang til.
By.xpath () brukes ofte til å få tilgang til tabellelementer.
Hvis elementet er skrevet dypt inne i HTML-koden slik at tallet som skal brukes for predikatet er veldig vanskelig å bestemme, kan vi bruke elementets unike attributt i stedet.
Attributter brukes som predikater ved å føre dem med @ -symbolet.