Comment cliquer sur icône de l'Image à l'aide de selenium webdriver
Je suis en train d'essayer de cliquer sur l'icône de l'image via xPath mais lorsque j'exécute le code, le lien présent sur l'icône de l'image n'est pas d'ouverture. pourriez-vous svp m'aider à résoudre ce problème.
Le Code que j'ai utilisé pour cliquez sur l'icône e-mail :
driver.findElement(By.xpath("//*[@id='e-switcher-mail-icon']")).click();
Pas sans connaissance de la page. Pourriez-vous poster la partie pertinente de la page HTML? Il n'existe aucun iframes? Est-il possible que l'application est en AJAX chargé et vous pourriez donc avoir besoin d'attendre un peu pour l'élément pour obtenir chargé (voir implicites et explicites attend)? Est-il une exception? Ou faut-il tout simplement congeler? Avez-vous essayé d'autres navigateurs?
J'obtiens l'erreur ci-dessous une fois que le script est exécuté..org.openqa.le sélénium.NoSuchElementException: aucun élément (Session d'info: chrome=29.0.1547.66) (Pilote info: chromedriver=2.2,=plate-forme Windows NT 6.1 SP1 x86_64) (ATTENTION: Le serveur ne fournit pas toutes les stacktrace de l'information) de Commande de la durée ou de l'expiration: 30.04 secondes
J'ai exécuté ce script dans Chrome et internet explorer, je ne pourrais pas exécuter parce que chaque fois que je clique sur le lien, il s'ouvre dans une nouvelle fenêtre et le cookie est perdu. Donc j'ai utilisé Chrome seul.
Dans la page HTML j'ai pu voir il y a quelques images utilisés, mais ils ne sont pas les iframes. J'ai joint le code de la page html dans ma question. S'il vous plaît examiner.
J'obtiens l'erreur ci-dessous une fois que le script est exécuté..org.openqa.le sélénium.NoSuchElementException: aucun élément (Session d'info: chrome=29.0.1547.66) (Pilote info: chromedriver=2.2,=plate-forme Windows NT 6.1 SP1 x86_64) (ATTENTION: Le serveur ne fournit pas toutes les stacktrace de l'information) de Commande de la durée ou de l'expiration: 30.04 secondes
J'ai exécuté ce script dans Chrome et internet explorer, je ne pourrais pas exécuter parce que chaque fois que je clique sur le lien, il s'ouvre dans une nouvelle fenêtre et le cookie est perdu. Donc j'ai utilisé Chrome seul.
Dans la page HTML j'ai pu voir il y a quelques images utilisés, mais ils ne sont pas les iframes. J'ai joint le code de la page html dans ma question. S'il vous plaît examiner.
OriginalL'auteur user1564024 | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Comme slanec dit plus d'information ou peut-être l'élément n'est pas chargé. Si u sentez que l'élément a été chargé et encore ce n'est pas passe, à l'aide de java script est une façon de cliquez sur l'élément de l'image.
Quelque chose comme cela
C'est parce que u ont les cadres. Veuillez utiliser quelque chose de cette façon pilote.switchTo().cadre(pilote.findElement(Par.id("nom")); Essayez de passer à la fois les images et ensuite effectuer l'action ci-dessus. U devra passer à la fois les cadres. Un pour e-image.. et un pour s_mainframe... alors essayez de ne pas poursuivre l'instruction ci-dessus pour en cliquant sur l'image ou le classique du pilote.trouver de.... .cliquez sur(). Essayez et laissez-moi savoir
le pilote.switchTo().cadre(pilote.findElement(Par.id("e-frameset"))); pilote.switchTo().cadre(pilote.findElement(Par.id("s_MainFrame"))); j'ai utilisé le code ci-dessus les lignes de suivi par code pilote de ligne.findElement(Par.xpath("//*[@id='e-switcher-mail-icon"]")).cliquez sur(); mais stil, je suis NOSuchElementException.
Correct. Maintenant, essayez d'utiliser le code java script à la place du conducteur.findElement(Par.xpath("//*[@id='e-switcher-mail-icon"]")).cliquez sur(); Et également ajouter un peu d'attente de tresorerie une fois après le cadre de l'interrupteur. Essayez et laissez-moi savoir
J'ai utilisé le pilote.switchTo().cadre(pilote.findElement(Par.id("e-frameset"))); pilote.switchTo().cadre(pilote.findElement(Par.id("s_MainFrame"))); Attendre<WebDriver> attendre= new FluentWait<WebDriver>(pilote).withTimeout(15L, TimeUnit.SECONDES).pollingEvery(1, TimeUnit.SECONDES); WebElement élément = pilote.findElement (Par.xpath ("//*[@id='e-switcher-mail-icon"]")); JavascriptExecutor exécuteur = (JavascriptExecutor) conducteur; l'exécuteur testamentaire.executeScript ("arguments[0].cliquez sur();" , element);pilote.switchTo().defaultContent(); mais encore, je suis NOSuchElementException.
OriginalL'auteur Sriram
Pourrait être que l'élément n'a pas encore été chargées dans les DOM. Essayez d'attente pour des conditions attendues:
OriginalL'auteur Pat Meeker
Touché. Il est les cadres. Soit
<frame>
ou<iframe>
, à la fois besoin de soins spéciaux, voir la documentation sur le sujet.Ce que vous devez faire:
après cela, le pilote est le contexte qui va passer à l'image et toutes les recherches seront faites, alors vous devriez être capable de trouver l'élément sans plus de problèmes.
Une fois que vous avez fait dans le cadre et vous avez besoin de revenir à la valeur par défaut du contexte de la page, n':
Essayez d'expérimenter avec elle un peu. Assurez-vous que vous avez activé le cadre de droite. Si oui, alors je crains que je vais faire ici car je ne sais pas quoi d'autre pourrait être en cause.
OriginalL'auteur Petr Janeček