Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich Elemente mit mehreren Klassennamen in Selenium finden?

Wie kann ich Elemente mit mehreren Klassennamen in Selenium finden?

DDD
DDDOriginal
2024-11-16 22:14:03933Durchsuche

How Can I Locate Elements with Multiple Class Names in Selenium?

Locator-Strategien für Elemente mit mehreren Klassennamen

Das Identifizieren von Webelementen mit mehreren Klassennamen kann eine Herausforderung darstellen, wenn bestimmte Locators verwendet werden, die einen erfordern einzelner, durch Leerzeichen getrennter Wert, wie etwa die @FindBy-Annotation in Java. Um dieses Problem zu lösen, ziehen Sie die folgenden alternativen Strategien in Betracht:

XPath-Locator

XPath-Ausdrücke bieten Flexibilität beim Abgleichen von Elementen basierend auf mehreren Attributen, einschließlich Klassennamen. Die folgenden Strategien können verwendet werden:

  • Genaue Übereinstimmung: Dieser Ansatz identifiziert Elemente, die genau mit den angegebenen Klassennamen in der gewünschten Reihenfolge übereinstimmen.
driver.findElement(By.xpath("//div[@class='value test']"));
  • Contains Constraint: Diese Strategie findet Elemente, die die angegebenen Klassennamen enthalten, unabhängig von ihren Reihenfolge.
driver.findElement(By.xpath("//div[contains(@class, 'value test')]"));
  • Mehrere enthält Einschränkungen: Um Elemente mit beiden Klassennamen abzugleichen, verwenden Sie den Operator „and“:
driver.findElement(By.xpath("//div[contains(@class, 'value') and contains(@class, 'test')]"));

CSS-Selektoren

CSS-Selektoren bieten eine weitere Option zum Auswählen von Elementen mit mehrere Klassennamen:

  • Genaue Übereinstimmung: Ähnlich wie XPath identifiziert dieser Selektor Elemente, die mit den angegebenen Klassennamen in der gewünschten Reihenfolge übereinstimmen.
driver.findElement(By.cssSelector("div[class='value test']"));
  • Enthält Teilzeichenfolge: Dieser Selektor findet Elemente mit einem Klassennamen, der den angegebenen enthält Teilzeichenfolge:
driver.findElement(By.cssSelector("div[class*='value test']"));
  • Klassenkombination: Um Elemente mit mehreren Klassennamen zu finden, verwenden Sie den Punktoperator (.), um sie zu kombinieren:
driver.findElement(By.cssSelector("div.value.test"));

Zusätzliche Überlegungen

Achten Sie bei der Verwendung mehrerer Klassennamen auf Folgendes:

  • Die Reihenfolge der Klassennamen kann sich auf die Übereinstimmungsergebnisse für exakt passende Locators auswirken.
  • XPath-Locators sind im Allgemeinen tendenziell langsamer als CSS-Selektoren.
  • CSS-Selektoren werden möglicherweise nicht von allen Webbrowsern unterstützt.

Das obige ist der detaillierte Inhalt vonWie kann ich Elemente mit mehreren Klassennamen in Selenium finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn