CSS-Selektor in Selenium

Was ist ein CSS-Selektor?

CSS-Selektoren in Selenium sind Zeichenfolgenmuster, die zur Identifizierung eines Elements basierend auf einer Kombination aus HTML-Tag, ID, Klasse und Attributen verwendet werden. Suchen nach CSS-Selektoren in Selenium ist komplizierter als die vorherigen Methoden, aber es ist die gebräuchlichste Lokalisierungsstrategie für Fortgeschrittene Selenium Benutzer, da es auch auf Elemente zugreifen kann, die keine ID oder keinen Namen haben.

CSS-Selektoren in Selenium Es gibt viele Formate, aber wir konzentrieren uns nur auf die gängigsten. Die verschiedenen Arten von CSS Locator in Selenium IDE

  • Tag und ID
  • Tag und Klasse
  • Tag und Attribut
  • Tag, Klasse und Attribut
  • Innerer Text

Bei dieser Strategie stellen wir immer das Target Feld mit „css=“, wie in den folgenden Beispielen gezeigt wird.

Tag und ID – CSS-Selektor

Auch in diesem Beispiel verwenden wir das E-Mail-Textfeld von Facebook. Wie Sie sich erinnern, hat es die ID „E-Mail“ und wir haben bereits im Abschnitt „Lokalisierung nach ID“ darauf zugegriffen. Dieses Mal verwenden wir ein Selenium CSS-Selektor mit ID beim Zugriff auf genau dasselbe Element.

Syntax

css=tag#id

  • tag = das HTML-Tag des Elements, auf das zugegriffen wird
  • # = das Hash-Zeichen. Dies sollte bei der Verwendung von a immer vorhanden sein Selenium CSS-Selektor mit ID
  • id = die ID des Elements, auf das zugegriffen wird

Beachten Sie, dass der ID immer ein Rautezeichen (#) vorangestellt ist.

Schritt 1) Navigieren www.facebook.com. Untersuchen Sie mit Firebug das Textfeld „E-Mail oder Telefonnummer“.

Beachten Sie an dieser Stelle, dass das HTML-Tag „input“ und seine ID „email“ ist. Unsere Syntax lautet also „css=input#email“.

Tag und ID – CSS-Selektor

Schritt 2) Geben Sie „css=input#email“ in das Target Kiste von Selenium IDE und klicken Sie auf die Schaltfläche „Suchen“. Selenium IDE sollte in der Lage sein, dieses Element hervorzuheben.

Tag und ID – CSS-Selektor

Tag und Klasse – CSS-Selektor

CSS-Selektor in Selenium Die Verwendung eines HTML-Tags und eines Klassennamens ähnelt der Verwendung eines Tags und einer ID, in diesem Fall wird jedoch ein Punkt (.) anstelle eines Rautezeichens verwendet.

Syntax

css=tag.class

  • tag = das HTML-Tag des Elements, auf das zugegriffen wird
  • . = das Punktzeichen. Dies sollte immer vorhanden sein, wenn ein CSS-Selektor mit Klasse verwendet wird
  • class = die Klasse des Elements, auf das zugegriffen wird

Schritt 1) Gehen Sie zur Demoseite https://demo.guru99.com/test/facebook.html und verwenden Sie Firebug, um das Textfeld „E-Mail oder Telefon“ zu überprüfen. Beachten Sie, dass sein HTML-Tag „input“ und seine Klasse „inputtext“ ist.

Tag und Klasse – CSS-Selektor

Schritt 2) In Selenium IDE, geben Sie “css=input.inputtext” in das Target und klicken Sie auf Suchen. Selenium Die IDE sollte das Textfeld „E-Mail“ oder „Telefon“ erkennen können.

Tag und Klasse – CSS-Selektor

Beachten Sie, dass nur das erste Element im Quellcode erkannt wird, wenn mehrere Elemente dasselbe HTML-Tag und denselben Namen haben. Überprüfen Sie mit Firebug das Textfeld „Passwort“ in Facebook und beachten Sie, dass es den gleichen Namen hat wie das Textfeld „E-Mail“ oder „Telefon“.

Tag und Klasse – CSS-Selektor

Der Grund, warum in der vorherigen Abbildung nur das Textfeld „E-Mail“ oder „Telefon“ hervorgehoben wurde, besteht darin, dass es in der Seitenquelle von Facebook an erster Stelle steht.

Tag und Klasse – CSS-Selektor

Tag und Attribut – CSS-Selektor

Diese Strategie verwendet das HTML-Tag und ein bestimmtes Attribut des Elements, auf das zugegriffen werden soll.

Syntax

css=tag[attribute=value]

  • tag = das HTML-Tag des Elements, auf das zugegriffen wird
  • [ und ] = eckige Klammern, in die ein bestimmtes Attribut und der zugehörige Wert eingefügt werden
  • attribute = das zu verwendende Attribut. Es empfiehlt sich, ein für das Element eindeutiges Attribut zu verwenden, beispielsweise einen Namen oder eine ID.
  • Wert = der entsprechende Wert des gewählten Attributs.

Schritt 1) Navigieren Mercury Anmeldeseite für Touren https://demo.guru99.com/test/newtours/register.php und überprüfen Sie das Textfeld „Nachname“. Beachten Sie den HTML-Tag (in diesem Fall „input“) und den Namen („lastName“).

Tag und Attribut – CSS-Selektor

Schritt 2) In Selenium IDE, geben Sie “css=input[name=lastName]” in das Target und klicken Sie auf Suchen. Selenium Die IDE sollte erfolgreich auf das Feld „Nachname“ zugreifen können.

Tag und Attribut – CSS-Selektor

Wenn mehrere Elemente dasselbe HTML-Tag und Attribut haben, wird nur das erste erkannt. Dieses Verhalten ähnelt dem Auffinden von Elementen mithilfe von CSS-Selektoren mit demselben Tag und derselben Klasse.

Tag, Klasse und Attribut – CSS-Selektor

Syntax

css=tag.class[attribute=value]

  • tag = das HTML-Tag des Elements, auf das zugegriffen wird
  • . = das Punktzeichen. Dies sollte immer vorhanden sein, wenn ein CSS-Selektor mit Klasse verwendet wird
  • class = die Klasse des Elements, auf das zugegriffen wird
  • [ und ] = eckige Klammern, in die ein bestimmtes Attribut und der zugehörige Wert eingefügt werden
  • attribute = das zu verwendende Attribut. Es empfiehlt sich, ein für das Element eindeutiges Attribut zu verwenden, beispielsweise einen Namen oder eine ID.
  • Wert = der entsprechende Wert des gewählten Attributs.

Schritt 1) Gehen Sie zur Demoseite https://demo.guru99.com/test/facebook.html und verwenden Sie Firebug, um die Eingabefelder „E-Mail oder Telefon“ und „Passwort“ zu überprüfen. Beachten Sie deren HTML-Tag, Klasse und Attribute. Für dieses Beispiel wählen wir deren „tabindex“-Attribute aus.

Tag, Klasse und Attribut – CSS-Selektor

Schritt 2) Wir werden zuerst auf das Textfeld „E-Mail oder Telefon“ zugreifen. Daher verwenden wir einen Tabindex-Wert von 1. Geben Sie „css=input.inputtext[tabindex=1]“ ein Selenium IDEs Target und klicken Sie auf „Suchen“. Das Eingabefeld „E-Mail oder Telefonnummer“ sollte hervorgehoben sein.

Tag, Klasse und Attribut – CSS-Selektor

Schritt 3) Um auf das Passwort-Eingabefeld zuzugreifen, ersetzen Sie einfach den Wert des tabindex-Attributs. Geben Sie „css=input.inputtext[tabindex=2]“ in das Target und klicken Sie auf die Schaltfläche Suchen. Selenium Die IDE muss das Textfeld „Kennwort“ erfolgreich identifizieren können.

Tag, Klasse und Attribut – CSS-Selektor

innerer Text – CSS-Selektor

Wie Sie vielleicht bemerkt haben, erhalten HTML-Labels selten ID-, Namens- oder Klassenattribute. Wie greifen wir also auf sie zu? Die Antwort liegt in der Verwendung ihrer inneren Texte. Innere Texte sind die tatsächlichen Zeichenfolgenmuster, die das HTML-Label auf der Seite anzeigt.

Syntax

css=tag:contains("inner text")

  • tag = das HTML-Tag des Elements, auf das zugegriffen wird
  • innerer Text = der innere Text des Elements

Schritt 1) Navigieren Mercury Homepage von Tours https://demo.guru99.com/test/newtours/ und verwenden Sie Firebug, um die Bezeichnung „Passwort“ zu untersuchen. Beachten Sie das HTML-Tag (in diesem Fall „font“) und beachten Sie, dass es keine Klassen-, ID- oder Namensattribute hat.

Innerer Text – CSS-Selektor

Schritt 2) Typ css=font:contains(“Passwort:”) in Selenium IDEs Target und klicken Sie auf Suchen. Selenium Die IDE sollte auf das Kennwortetikett zugreifen können, wie im Bild unten gezeigt.

Innerer Text – CSS-Selektor

Schritt 3) Ersetzen Sie diesmal den inneren Text durch „Boston“, damit Ihr Target wird nun zu „css=font:contains(„Boston“)“. Klicken Sie auf „Suchen“. Sie sollten bemerken, dass die Beschriftung „Boston nach San Francisco“ hervorgehoben wird. Dies zeigt Ihnen, dass Selenium Die IDE kann auf eine lange Beschriftung zugreifen, selbst wenn Sie nur das erste Wort des inneren Textes angegeben haben.

Innerer Text – CSS-Selektor

Zusammenfassung

Syntax für die Suche nach Verwendung des CSS-Selektors

Methodik Target Syntax Beispiel
Tag und ID css=tag#id css=Eingabe#E-Mail
Tag und Klasse css=tag.class css=input.inputtext
Tag und Attribut css=tag[attribute=value] css=input[name=lastName]
Tag, Klasse und Attribut css=tag.klasse[attribut=wert] css=input.inputtext[tabindex=1]