8
votes

sélénium webdiver: org.openqa.selenium.ElementNotvisibleException: élément n'est pas visible et ne peut donc pas être interagi avec

J'essaie de cliquer sur la portée avec le concept de text-clone. Voici le code HTML

WebElement foo = driver.findElement(By.xpath("//span[text()='Clone concept']"));
Actions bar = new Actions(driver);
bar.click(foo).perform(); 


1 commentaires

Ceci est une question commune. Stackoverflow.com/ Questions / 6101461 / ...


4 Réponses :


12
votes

Malheureusement, webDiver ne semble pas être excellent pour la manipulation de situations comme celle décrite dans vos questions. Vous avez cependant quelques options. MOCK A Cliquez sur JavaScript:

((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);


1 commentaires

A pris un certain temps pour le voir, mais ellementtoclick est l'élément webDriver que vous avez trouvé avec pilote.findElement () .



0
votes

Le problème est dans votre xPath. SELENIUM WEBDRIVER Constriction d'un élément en double par votre écran XPath à l'écran qui est caché et tring pour effectuer une opération dessus. S'il vous plaît changer le xpath et ça fonctionnera. J'ai fait la même chose dans mon code ..


1 commentaires

C'est exactement le problème que j'avais aussi. var n = _currentbrowserdriver.findelements (nommé (Nomname)). Cou NT; Si (N> 1) jeter une nouvelle exception ("élément n'est pas unique");



1
votes

Pour la requête ci-dessus, voici le XPath:

//ui[@class='context-menu-list context-menu-root']/span[contains(text(),'Clone concept')]


1 commentaires

Toutes mes excuses, le vote en direct a été accidentel sur ce que je viens de remarquer, je ne peux pas supprimer que si la réponse n'est éditée



0
votes

Fondamentalement, il y a quatre raisons pour lesquelles un élément n'est pas interactable. Aucune quatre n'est généralement la solution.

1) Timing - le temps qu'il faut pour des éléments à charger. Pour cela, vous devez vérifier comment utiliser implicite une attente explicite p>

2) Vérifiez si l'élément est dans un cadre p>

3) localisateur incorrect p>

4 ) Mauvaise mise en œuvre de la réactivité. Cela découle toujours du n ° 3). Certains sites Web n'ont qu'un seul code activé pour les versions mobiles et Web. Ainsi, l'élément aura plus d'une instance lorsque vous vérifiez le XXXXX.SIZE. Vous devrez effectuer une recherche via la liste pour celle dont l'affichage! = Aucun. Ensuite, vous pouvez ajouter la position de l'élément à votre XPath ou quel que soit le localisateur que vous utilisez. Par exemple. XXXX / YYYYY / ZZZZ [3] CODE> Si la position est de 4 dans la liste. P>

Utilisez ce code pour Java,
Hypothèses
a) le type de localisation est ID
b) Nom de la liste est NameofYourelements P>

List<WebElement> nameOfYourElements = wd.findElements(By.id("nameOfYourID"));
System.out.println(nameOfYourElements.size());


0 commentaires