CSS-väljare in Selenium

Vad är en CSS-väljare?

CSS-väljare i Selenium är strängmönster som används för att identifiera ett element baserat på en kombination av HTML-tagg, id, klass och attribut. Lokalisering av CSS-väljare i Selenium är mer komplicerad än de tidigare metoderna, men det är den vanligaste lokaliseringsstrategin för avancerade Selenium användare eftersom den kan komma åt även de element som inte har något ID eller namn.

CSS-väljare i Selenium har många format, men vi kommer bara att fokusera på de vanligaste. De olika typerna av CSS Locator i Selenium IDE

  • Tagg och ID
  • Tagg och klass
  • Tagg och attribut
  • Tagg, klass och attribut
  • Inre text

När vi använder denna strategi har vi alltid prefixet Target box med "css=" som kommer att visas i följande exempel.

tagg och id – CSS-väljare

Återigen kommer vi att använda Facebooks e-posttextruta i det här exemplet. Som du kan minnas har den ett ID för "e-post", och vi har redan kommit åt det i avsnittet "Lokalisera efter ID". Den här gången kommer vi att använda en Selenium CSS-väljare med ID för att komma åt samma element.

syntax

css=tag#id

  • tag = HTML-taggen för det element som används
  • # = hash-tecknet. Detta ska alltid finnas när du använder en Selenium CSS-väljare med ID
  • id = ID för elementet som nås

Tänk på att ID alltid föregås av ett hash-tecken (#).

Steg 1) Navigera till www.facebook.com. Använd Firebug, undersök textrutan "E-post eller telefon".

Observera att HTML-taggen är "input" och dess ID är "e-post". Så vår syntax kommer att vara "css=input#email".

Tagg och id - CSS-väljare

Steg 2) Ange "css=input#email" i Target Låda av Selenium IDE och klicka på knappen Sök. Selenium IDE bör kunna markera det elementet.

Tagg och id - CSS-väljare

tagg och klass – CSS-väljare

CSS-väljare in Selenium att använda en HTML-tagg och ett klassnamn liknar att använda en tagg och ett ID, men i det här fallet används en punkt (.) istället för ett hash-tecken.

syntax

css=tag.class

  • tag = HTML-taggen för det element som används
  • . = pricktecknet. Detta ska alltid finnas när du använder en CSS-väljare med klass
  • class = klassen för det element som nås

Steg 1) Gå till demosidan http://demo.guru99.com/test/facebook.html och använd Firebug för att inspektera textrutan "E-post eller telefon". Lägg märke till att dess HTML-tagg är "input" och dess klass är "inputtext".

Tagg och klass - CSS-väljare

Steg 2) In Selenium IDE, ange "css=input.inputtext" i Target rutan och klicka på Sök. Selenium IDE bör kunna känna igen textrutan E-post eller telefon.

Tagg och klass - CSS-väljare

Observera att när flera element har samma HTML-tagg och namn, kommer endast det första elementet i källkoden att kännas igen. Använd Firebug, inspektera textrutan Lösenord i Facebook och lägg märke till att den har samma namn som textrutan E-post eller telefon.

Tagg och klass - CSS-väljare

Anledningen till att endast textrutan E-post eller telefon markerades i föregående illustration är att den kommer först i Facebooks sidkälla.

Tagg och klass - CSS-väljare

tagg och attribut – CSS-väljare

Denna strategi använder HTML-taggen och ett specifikt attribut för det element som ska nås.

syntax

css=tag[attribute=value]

  • tag = HTML-taggen för det element som används
  • [ och ] = hakparenteser inom vilka ett specifikt attribut och dess motsvarande värde kommer att placeras
  • attribut = det attribut som ska användas. Det är tillrådligt att använda ett attribut som är unikt för elementet, såsom ett namn eller ID.
  • värde = motsvarande värde för det valda attributet.

Steg 1) Navigera till Mercury Tours registreringssida http://demo.guru99.com/test/newtours/register.php och inspektera textrutan "Efternamn". Notera dess HTML-tagg ("indata" i det här fallet) och dess namn ("efternamn").

Tagg och attribut - CSS-väljare

Steg 2) In Selenium IDE, ange "css=input[namn=efternamn]" i Target rutan och klicka på Sök. Selenium IDE bör kunna komma åt rutan Efternamn.

Tagg och attribut - CSS-väljare

När flera element har samma HTML-tagg och attribut, kommer endast det första att kännas igen. Det här beteendet liknar att lokalisera element med CSS-väljare med samma tagg och klass.

tagg, klass och attribut – CSS-väljare

syntax

css=tag.class[attribute=value]

  • tag = HTML-taggen för det element som används
  • . = pricktecknet. Detta ska alltid finnas när du använder en CSS-väljare med klass
  • class = klassen för det element som nås
  • [ och ] = hakparenteser inom vilka ett specifikt attribut och dess motsvarande värde kommer att placeras
  • attribut = det attribut som ska användas. Det är tillrådligt att använda ett attribut som är unikt för elementet, såsom ett namn eller ID.
  • värde = motsvarande värde för det valda attributet.

Steg 1) Gå till demosidan http://demo.guru99.com/test/facebook.html och använd Firebug för att inspektera inmatningsrutorna "E-post eller telefon" och "Lösenord". Notera deras HTML-tagg, klass och attribut. För det här exemplet kommer vi att välja deras 'tabindex'-attribut.

Tagg, klass och attribut - CSS-väljare

Steg 2) Vi kommer först åt textrutan 'E-post eller telefon'. Därför kommer vi att använda ett tabindex-värde på 1. Ange "css=input.inputtext[tabindex=1]" i Selenium Idus Target rutan och klicka på Sök. Inmatningsrutan 'E-post eller telefon' ska vara markerad.

Tagg, klass och attribut - CSS-väljare

Steg 3) För att komma åt inmatningsrutan Lösenord, ersätt helt enkelt värdet för tabindex-attributet. Ange "css=input.inputtext[tabindex=2]" i Target rutan och klicka på knappen Sök. Selenium IDE måste kunna identifiera textrutan Lösenord med framgång.

Tagg, klass och attribut - CSS-väljare

inre text – CSS-väljare

Som du kanske har märkt får HTML-etiketter sällan id, namn eller klassattribut. Så, hur kommer vi åt dem? Svaret är genom att använda deras inre texter. Inre texter är de faktiska strängmönster som HTML-etiketten visar på sidan.

syntax

css=tag:contains("inner text")

  • tag = HTML-taggen för det element som används
  • inre text = elementets inre text

Steg 1) Navigera till Mercury Tours hemsida http://demo.guru99.com/test/newtours/ och använd Firebug för att undersöka etiketten "Lösenord". Notera dess HTML-tagg (som är "font" i det här fallet) och lägg märke till att den inte har några klass-, id- eller namnattribut.

Inre text - CSS-väljare

Steg 2) Typ css=font:contains(“Lösenord:”) in Selenium Idus Target rutan och klicka på Sök. Selenium IDE bör kunna komma åt lösenordsetiketten som visas i bilden nedan.

Inre text - CSS-väljare

Steg 3) Den här gången byter du ut den inre texten med "Boston" så att din Target kommer nu att bli "css=font:contains("Boston"). Klicka på Sök. Du bör märka att etiketten "Boston till San Francisco" blir markerad. Det här visar dig det Selenium IDE kan komma åt en lång etikett även om du precis angav det första ordet i dess inre text.

Inre text - CSS-väljare

Sammanfattning

Syntax för lokalisering med CSS-väljaranvändning

Metod Target syntax Exempelvis
Tagg och ID css=tag#id css=ingång#e-post
Tagg och klass css=tag.klass css=input.inputtext
Tagg och attribut css=tag[attribut=värde] css=input[namn=efternamn]
Tag, klass och attribut css=tag.klass[attribut=värde] css=input.inputtext[tabindex=1]