2010-09-08 9 views
5

Ich weiß, dass Selen css Locators verwenden kann.Selen CSS Locator Platz in Locator

Ich weiß, dass die Syntax so etwas wie dieses:

xpath = // div [@ id 'topLeft') // Spanne [enthält (@ Klasse, 'name')]
oder css = # topLeft .name

Nun, was ist, wenn .name ist wie folgt: // Spanne [enthält (@ Klasse, 'name mit Raum')]

Dann würde scheitern es ... wie suchen ein Locator, der Platz hat?

Danke!

EDIT Lösung: css = span.name.with.space

Antwort

5

Klassennamen haben keine Leerzeichen. Sie können jedoch mehrere Klassen für ein einzelnes Element definieren, indem Sie ein Leerzeichen dazwischen setzen. Werfen Sie einen Blick auf die id and class identifiers section in the HTML spec für mehr.

Sie sollten den CSS-Locator nur mit einer der Klassen verwenden können.

Wenn das nicht funktioniert, überprüfen Sie Ihren CSS-Selektor mit einem Tool wie Firefinder for FireBug. Ich konnte Selenium-IDE mit einem Element verwenden, das zwei Klassen hatte. Für die HTML

<div class="c1 c2"> 
    <span class"s1">Test</span> 
</div> 

verwendete ich die Wähler

css=div.c1 span 
+0

Ja. Sagen Sie das zu den Entwicklern in meiner Firma, die Klassennamen wie diesen haben: button AddComment IntegrationButton. – Hannibal

+0

Ich sage nicht, dass es keine Leerzeichen geben kann. Ich weise darauf hin, dass das nicht alle eine Klasse sind. Das sind einzelne Klassen. Wenn Sie versuchen, einen mit einem Selektor zu identifizieren, wählen Sie einfach eine Klasse aus. – pnewhook

+0

Jetzt bin ich derjenige, der dumm ist ... Ich hätte nie gedacht, dass ein Element mehrere Klassen haben kann? Verdammt ... Ich lerne jeden Tag etwas Neues. :) Das heißt, wenn ich einen Klassennamen wie folgt sehe: "button Something submitter" ... Dass dieses Element eine Button-Klasse Something class und submitter class hat? Und wenn ich nach Button-Klasse suchen, dann wird dieser auch gefunden werden? – Hannibal

-2

Mit CSS ist es einfacher als eine lange XPath:

span.class1.class2

Verwandte Themen