Det finns tillfällen när vi behöver komma åt element (vanligtvis texter) som finns i HTML-tabeller. Det är dock mycket sällan för en webbdesigner att tillhandahålla ett ID eller namnattribut till en viss cell i tabellen. Därför kan vi inte använda de vanliga metoderna som "By.id ()", "By.name ()" eller "By.cssSelector ()". I det här fallet är det mest pålitliga alternativet att komma åt dem med metoden "By.xpath ()".
I den här handledningen lär du dig
Hur man skriver XPath för tabell
Åtkomst till kapslade tabeller
Använda attribut som predikat
Genväg: Använd inspekteringselementet för åtkomst till tabeller i selen
Hur man skriver XPath för tabell
Tänk på HTML-koden nedan.
Vi använder XPath för att få den inre texten i cellen som innehåller texten "fjärde cellen."
Steg 1 - Ställ in överordnat element (tabell)
XPath-sökare i WebDriver börjar alltid med ett dubbelt snedstreck "//" och följs sedan av det överordnade elementet . Eftersom vi har att göra med tabeller bör det överordnade elementet alltid vara taggen . Den första delen av vår XPath-lokaliserare bör därför börja med "// tabell".
Steg 2 - Lägg till underordnade element
Elementet omedelbart under är
så vi kan säga att
är "barnet" till . Och
är "föräldern" till
. Alla underordnade element i XPath placeras till höger om sitt överordnade element, separerade med ett snedstreck "/" som koden som visas nedan.
Steg 3 - Lägg till predikat
Elementet
innehåller två
-taggar. Vi kan nu säga att dessa två
taggar är "barn" till
. Följaktligen kan vi säga att
är föräldern till båda
-elementen.
En annan sak som vi kan dra slutsatsen är att de två
elementen är syskon. Syskon hänvisar till barnelement som har samma förälder .
För att komma till
vi vill komma åt (den med texten "fjärde cellen") måste vi först komma åt den andra
och inte den första. Om vi bara skriver "// table / tbody / tr", kommer vi att komma åt den första
-taggen.
Så, hur får vi åtkomst till den andra
då? Svaret på detta är att använda Predicates .
Predikat är siffror eller HTML-attribut som är inneslutna i ett par hakparenteser []] som skiljer ett barnelement från sina syskon . Eftersom
vi behöver åtkomst är den andra, ska vi använda "[2]" som predikat.
Om vi inte använder något predikat kommer XPath åt det första syskonet. Därför kan vi komma åt den första
med någon av dessa XPath-koder.
Steg 4 - Lägg till de efterföljande barnelementen med lämpliga predikat
Nästa element vi behöver komma åt är det andra
. Genom att tillämpa principerna vi har lärt oss från steg 2 och 3 kommer vi att slutföra vår XPath-kod så att den liknar den som visas nedan.
Nu när vi har rätt XPath-lokaliserare kan vi redan komma åt cellen som vi ville och få sin inre text med hjälp av koden nedan. Det förutsätter att du har sparat HTML-koden ovan som "newhtml.html" på din C-enhet.
Samma principer som diskuterats ovan gäller kapslade tabeller. Kapslade tabeller är tabeller i en annan tabell . Ett exempel visas nedan.
För att komma åt cellen med texten "4-5-6" med "// parent / child" och predikatbegrepp från föregående avsnitt, borde vi kunna komma med XPath-koden nedan.
WebDriver-koden nedan ska kunna hämta den inre texten i cellen som vi har åtkomst till.
Utdata nedan bekräftar att den inre tabellen nås framgångsrikt.
Använda attribut som predikat
Om elementet skrivs djupt inuti HTML-koden så att antalet som ska användas för predikatet är mycket svårt att bestämma, kan vi istället använda elementets unika attribut.
I exemplet nedan finns cellen "New York till Chicago" djupt in i Mercury Tours hemsidas HTML-kod.
I det här fallet kan vi använda tabellens unika attribut (bredd = "270") som predikat. Attribut används som predikat genom att prefixa dem med @ -symbolen . I exemplet ovan finns cellen "New York till Chicago" i den första
av den fjärde
, och därför bör vår XPath vara som visas nedan.
Kom ihåg att när vi placerar XPath-koden i Java, ska vi använda escape-tecknet bakåt snedstreck "\" för dubbla citattecken på båda sidor om "270" så att strängargumentet för By.xpath () inte avslutas i förtid .
Vi är nu redo att komma åt den cellen med koden nedan.
Genväg: Använd inspekteringselementet för åtkomst till tabeller i selen
Om numret eller attributet för ett element är extremt svårt eller omöjligt att få, är det snabbaste sättet att generera XPath-koden att använda Inspect Element.
Tänk på exemplet nedan från Mercury Tours hemsida.
Steg 1
Använd Firebug för att få XPath-koden.
Steg 2
Leta efter det första "tabell" överordnade elementet och ta bort allt till vänster om det.
Steg 3
Prefixa den återstående delen av koden med dubbel snedstreck "//" och kopiera den till din WebDriver-kod.
WebDriver-koden nedan kommer att kunna hämta den inre texten till det element som vi använder.
By.xpath () används ofta för att komma åt tabellelement.
Om elementet skrivs djupt inuti HTML-koden så att antalet som ska användas för predikatet är mycket svårt att bestämma, kan vi istället använda elementets unika attribut.
Attribut används som predikat genom att prefixa dem med @ -symbolen.
Använd inspekteringselementet för åtkomst till bord i selen