it-swarm.com.de

webdriver-Klassenname mit Leerzeichen unter Verwendung von Java

Diese Frage erhielt großartige Antworten in jquery und ich wunderte mich, ob jemand ein Beispiel von dieses in Java geben könnte, bitte? 

Ich mache driver.findElement(By.className("current time")).click(); Das Leerzeichen ist das Problem und ich sehe die Erklärung unter dem Link, aber ich bin nicht sicher, wie es in Java gehandhabt werden soll, und habe keinen Zugriff auf den Klassennamen.

Beispiel einfügen, was ich in Firefox Inspect ID bekomme: Beispiel mit cssSelector unten hat nicht funktioniert, aber es fehlt mir vielleicht etwas.

<span>
<a class="current time" href="http://someurl/"   onclick="s_objectID="http://someur/">url</a>
</span>
18
Green

Anstelle des Klassennamens können Sie einen CSS-Selektor verwenden. Sie erwähnen den Tagesnamen nicht für die Klasse 'aktuelle Uhrzeit'. Ich gehe davon aus, dass es sich um Eingaben handelt.

WebElement element = driver.findElement(By.cssSelector("input[class='current time']"));
element.click();

Edit # 1 Basierend auf der bereitgestellten HTML,

Wenn Sie sich die HTML in Ihrem Kommentar ansehen, scheint es, als hätten Sie viele Möglichkeiten, das webElement zu finden. Hier sind Ihre Optionen,

WebElement element = driver.findElement(By.cssSelector("a[class='current time']"));
element.click();

oder das sollte auch funktionieren

WebElement element = driver.findElement(By.cssSelector("a.current.time"));
element.click();

Sie können linkText auch verwenden, da das Element link ist. In der von Ihnen angegebenen HTML-Datei lautet der Linktext "URL".

WebElement element = driver.findElement(By.linkText("url"));
element.click();

Sie können auch By.partialLinkText("partial link text here"); verwenden.

Sie können xpath auch verwenden als:

WebElement element = driver.findElement(By.xpath("//a[@class='current time']"));
element.click();

ODER,

WebElement element = driver.findElement(By.xpath("//a[text() = 'url']"));
element.click();
48
nilesh

Für einen weniger fragilen Test ist eine andere Option die Verwendung eines XPATH, der nicht von der Reihenfolge der Klassen abhängt, wie:

WebElement element = driver.findElement(By.xpath("//a[contains(@class, 'current') and contains(@class, 'time')]"));
3
user859740

Immer wenn Sie etwas Platz im Klassennamen gefunden haben, müssen Sie zu cssSelector Locator wechseln.

Konvertieren Sie einen Klassennamen in cssSelector, wenn er ein Leerzeichen enthält.

In Ihrem Fall 

WebElement element = driver.findElement(By.cssSelector(".current.time']"));
element.click();

PS: addiere. [dot] in Start des Klassennamens und ersetzen Sie das Leerzeichen durch. [dot] , um den Klassennamen in cssSelector zu konvertieren. 

0
Gaurav