web-dev-qa-db-fra.com

webdriver classname avec espace en utilisant java

Cette question a été très bien accueillie et je me demandais si quelqu'un pourrait donner un exemple de this en Java, s'il vous plaît? 

Je fais driver.findElement(By.className("current time")).click(); L'espace est le problème, et je vois l'explication sur le lien, mais je ne sais pas comment le gérer en Java et je n'ai pas le droit de changer le nom de la classe.

Coller exemple de ce que je reçois dans firefox inspect id: Exemple avec cssSelector ci-dessous ne fonctionne pas, mais il se peut que je manque quelque chose.

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

Au lieu du nom de la classe, vous pouvez utiliser un sélecteur CSS. Vous ne mentionnez pas le nom pour l'heure actuelle de la classe. Je suppose que ce sera une entrée, donc votre travail de sélecteur css soit,

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

Edit # 1 Basé sur le HTML fourni,

En regardant le code HTML dans votre commentaire, il semble que vous disposiez de plusieurs options pour trouver le WebElement. Voici vos options,

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

ou cela devrait fonctionner aussi,

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

Vous pouvez également utiliser linkText puisque l'élément est link. À partir du code HTML que vous avez fourni, le texte du lien est "url"

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

Vous pouvez également utiliser By.partialLinkText("partial link text here");

Vous pouvez également utiliser xpath comme:

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

OU,

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

Pour un test moins fragile, une autre option consiste à utiliser un XPATH qui ne dépend pas de l'ordre des classes, comme:

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

Chaque fois que vous avez trouvé de la place dans le nom de la classe, vous devez passer à cssSelector Locator.

Convertissez un nom de classe en cssSelector s'il dispose d'un espace comme ci-dessous.

Dans ton cas 

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

PS: ajouter. [point] au début du nom de la classe et remplacez l'espace par. [point] pour convertir le nom de la classe en cssSelector. 

0
Gaurav