2011-09-19 7 views
13

Questa domanda ha ricevuto ottime risposte in jQuery e mi chiedevo se qualcuno potesse fornire un esempio di this in Java, per favore?nome server webdriver con spazio utilizzando java

Sto facendo driver.findElement(By.className("current time")).click(); Lo spazio è il problema, e vedo la spiegazione al link, ma non sono sicuro di come gestirlo in java, e non ho accesso a cambiare il nome della classe.

Incollare l'esempio di ciò che ottengo nel firefox inspect id: l'esempio con cssSelector di seguito non ha funzionato, ma potrebbe mancare qualcosa.

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

Si noti che 'class =" ora corrente "' dichiara un elemento con ** due ** classi: 'corrente' e' orario'. Non è * una * ora corrente di classe singola'. –

+0

@JoachimSauer È un'ottima informazione per i principianti – rakeshNS

risposta

38

Al posto del nome della classe è possibile utilizzare un selettore di CSS. Non menzioni il tagname per la classe "ora corrente". Io parto dal presupposto che sia in ingresso, così il vostro css lavoro selettore di essere,

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

Modifica # 1 Sulla base di HTML fornito,

Guardando il codice HTML nel tuo commento, sembra avere un bel poche opzioni per trovare l'elemento web. Qui ci sono le opzioni,

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

o questo dovrebbe funzionare anche,

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

è anche possibile utilizzare linkText poiché l'elemento è collegamento. Dal html che hai fornito, il testo del link è 'url'

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

È inoltre possibile utilizzare By.partialLinkText("partial link text here");

È anche possibile utilizzare XPath come:

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

O,

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

Ciao, grazie per l'aiuto. Non ha funzionato per me, incollo il pezzo che sto cercando di fare clic. Funziona quando il nome della classe è una parola, ma in alcune parole è come nell'esempio seguente. Ho provato il cssSelector ma sono nuovo a questo e potrebbe facilmente mancare qualcosa. url Green

+1

Ho aggiornato la risposta in base all'html fornito per una migliore visualizzazione. Provalo e facci sapere – nilesh

+0

Grazie per l'aiuto. Ho dovuto usare il linktext che stavo cercando di evitare, io sono nuovo a questo quindi non potrei attualmente dire perché gli altri esempi non hanno funzionato. – Green

2

Per un test meno fragile, un'altra opzione consiste nell'utilizzare un XPATH che non dipende dall'ordine delle classi, come :

0

Ogni volta che hai trovato spazio nel nome della classe devi passare a cssSelector Locator.

Convertire un nome di classe in cssSelector se ha uno spazio come indicato di seguito.

Nel tuo caso

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

PS: aggiungere . [punto] all'inizio del nome classe e sostituire lo spazio con . [punto] per convertire il nome della classe in cssSelector.

Problemi correlati