Der er tidspunkter, hvor vi har brug for at få adgang til elementer (normalt tekster), der er inden for HTML-tabeller. Det er dog meget sjældent for en webdesigner at angive en id- eller navneattribut til en bestemt celle i tabellen. Derfor kan vi ikke bruge de sædvanlige metoder såsom "By.id ()", "By.name ()" eller "By.cssSelector ()". I dette tilfælde er den mest pålidelige mulighed at få adgang til dem ved hjælp af metoden "By.xpath ()".
I denne vejledning lærer du-
Hvordan man skriver XPath til tabel
Adgang til indlejrede tabeller
Brug af attributter som forudsigelser
Genvej: Brug inspektionselementet til adgang til borde i selen
Hvordan man skriver XPath til tabel
Overvej HTML-koden nedenfor.
Vi bruger XPath til at få den indre tekst i cellen, der indeholder teksten "fjerde celle".
Trin 1 - Indstil overordnet element (tabel)
XPath-placatorer i WebDriver starter altid med et dobbelt skråstreg fremad "//" og derefter efterfulgt af det overordnede element . Da vi har at gøre med tabeller, skal det overordnede element altid være -tagget. Den første del af vores XPath-locator skal derfor starte med "// table".
Trin 2 - Tilføj underordnede elementer
Elementet umiddelbart under er
, så vi kan sige, at
er "barnet" til
. Og også er "forælder" til
. Alle underordnede elementer i XPath er placeret til højre for deres overordnede element, adskilt med et skråstreg fremad "/" som koden vist nedenfor.
Trin 3 - Tilføj forudsigelser
Elementet
indeholder to
tags. Vi kan nu sige, at disse to
tags er "børn" til
. Derfor kan vi sige, at
er forælder til begge
-elementerne.
En anden ting, vi kan konkludere, er, at de to
elementer er søskende. Søskende henviser til barnelementer, der har den samme forælder .
For at komme til det
, vi ønsker at få adgang til (det med teksten "fjerde celle"), skal vi først få adgang til den anden
og ikke den første. Hvis vi blot skriver "// table / tbody / tr", får vi adgang til det første
-tag.
Så hvordan får vi adgang til den anden
derefter? Svaret på dette er at bruge Predicates .
Predikater er tal eller HTML-attributter omgivet af et par firkantede parenteser [[] ", der adskiller et underordnet element fra dets søskende . Da
vi har brug for adgang er den anden, skal vi bruge "[2]" som prædikat.
Hvis vi ikke bruger noget prædikat, får XPath adgang til det første søskende. Derfor kan vi få adgang til den første
ved hjælp af en af disse XPath-koder.
Trin 4 - Tilføj de efterfølgende børneelementer ved hjælp af de relevante forudsigelser
Det næste element, vi har brug for at få adgang til, er det andet
. Ved at anvende de principper, vi har lært fra trin 2 og 3, vil vi færdiggøre vores XPath-kode, som den er vist nedenfor.
Nu hvor vi har den rigtige XPath locator, kan vi allerede få adgang til den celle, som vi ønskede, og få dens indre tekst ved hjælp af nedenstående kode. Det antages, at du har gemt HTML-koden ovenfor som "newhtml.html" i dit C-drev.
De samme principper, der er diskuteret ovenfor, gælder for indlejrede tabeller. Indlejrede tabeller er tabeller placeret i en anden tabel . Et eksempel er vist nedenfor.
For at få adgang til cellen med teksten "4-5-6" ved hjælp af "// forælder / barn" og prædikatbegreber fra det foregående afsnit, skal vi være i stand til at komme med XPath-koden nedenfor.
WebDriver-koden nedenfor skal kunne hente den indre tekst i den celle, som vi har adgang til.
Outputtet nedenfor bekræfter, at der er adgang til den indre tabel.
Brug af attributter som forudsigelser
Hvis elementet er skrevet dybt inde i HTML-koden, således at det nummer, der skal bruges til prædikatet, er meget vanskeligt at bestemme, kan vi i stedet bruge elementets unikke attribut.
I eksemplet nedenfor er "New York til Chicago" cellen placeret dybt inde i Mercury Tours startside HTML-kode.
I dette tilfælde kan vi bruge tabellens unikke attribut (bredde = "270") som prædikat. Attributter bruges som prædikater ved at sætte dem foran symbolet @ . I eksemplet ovenfor er "New York til Chicago" cellen placeret i den første
af den fjerde
, og vores XPath skal derfor være som vist nedenfor.
Husk, at når vi lægger XPath-koden i Java, skal vi bruge flugttegnet bagud skråstreg "\" til de dobbelte anførselstegn på begge sider af "270", så strengargumentet for By.xpath () ikke afsluttes for tidligt .
Vi er nu klar til at få adgang til den celle ved hjælp af nedenstående kode.
Genvej: Brug inspektionselementet til adgang til borde i selen
Hvis antallet eller attributten for et element er ekstremt vanskeligt eller umuligt at få, er den hurtigste måde at generere XPath-koden ved hjælp af Inspect Element.
Overvej eksemplet nedenfor fra Mercury Tours hjemmeside.
Trin 1
Brug Firebug til at hente XPath-koden.
Trin 2
Kig efter det første overordnede element "tabel", og slet alt til venstre for det.
Trin 3
Præfiks den resterende del af koden med dobbelt skråstreg "//" og kopier den over til din WebDriver-kode.
WebDriver-koden nedenfor kan med succes hente den indre tekst af det element, vi har adgang til.
By.xpath () bruges ofte til at få adgang til tabelelementer.
Hvis elementet er skrevet dybt inde i HTML-koden, således at det nummer, der skal bruges til prædikatet, er meget vanskeligt at bestemme, kan vi i stedet bruge elementets unikke attribut.
Attributter bruges som prædikater ved at sætte dem foran symbolet @.
Brug inspektionselementet til adgang til borde i selen