2011-09-19 18 views
13

Esta pregunta recibió excelentes respuestas en jquery y me preguntaba si alguien podría dar un ejemplo de this en Java, por favor?webdriver classname with space using java

Estoy haciendo driver.findElement(By.className("current time")).click(); El espacio es el problema, y ​​veo la explicación en el enlace, pero no estoy seguro de cómo manejarlo en java, y no tengo acceso para cambiar el nombre de clase.

Pegando el ejemplo de lo que obtengo en el id de inspección de Firefox: El ejemplo con cssSelector a continuación no funcionó, pero me puede estar faltando algo.

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

Se debe tener en cuenta que 'class =" current time "' declara un elemento con ** dos ** clases: 'current' y' time'. Es * no * una sola clase 'hora actual'. –

+0

@JoachimSauer Es una gran información para los novatos – rakeshNS

Respuesta

38

En lugar del nombre de clase, puede usar un selector css. No mencionas el nombre de la etiqueta para la clase 'hora actual'. Estoy asumiendo que sea de entrada, por lo que su CSS selector trabajan sea,

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

Edición # 1 Basado en HTML proporcionado,

Mirando el HTML en tu comentario, parece que tiene un buen pocas opciones para encontrar webElement. Estas son las opciones,

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

o esto debería funcionar también,

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

También puede utilizar linkText ya que el elemento es enlace. Desde el html que ya ha proporcionado, el texto del enlace es 'url'

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

También puede utilizar By.partialLinkText("partial link text here");

También puede utilizar XPath como:

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

Hola, gracias por ayudarme. Eso no funcionó para mí, pegaré la pieza en la que trato de hacer clic. Esto funciona cuando el nombre de clase es una palabra, pero son dos palabras en algunos como el siguiente ejemplo. Intenté el cssSelector pero soy nuevo en esto y podría perder algo fácilmente. url Green

+1

He actualizado la respuesta basado en el código HTML que ya ha proporcionado para una mejor visualización. Pruébelo y háganos saber – nilesh

+0

Gracias por la ayuda. Tuve que usar el texto de enlace que estaba tratando de evitar, soy nuevo en esto, así que actualmente no puedo decir por qué los otros ejemplos no funcionaron. – Green

2

Para una prueba menos frágil, otra opción es usar una XPATH que no dependa del orden de las clases, como :

0

Siempre que encuentre espacio en el nombre de la clase, debe cambiar al cssSelector Locator.

Convierta un nombre de clase a cssSelector si tiene un espacio como el siguiente.

En su caso

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

PS: añadir . [punto] al comienzo del nombre de la clase y reemplace el espacio con . [punto] para convertir el nombre de la clase a cssSelector.

Cuestiones relacionadas