Je travaille sur la création d'un test automatisé pour certaines applications Web. Cette application est très complexe. En fait c'est un éditeur de texte pour un contenu spécifique. Dans le cadre de la fonctionnalité, il a quelques cadres pop-up. Vous pouvez ouvrir cette fenêtre pop-up? Apportez quelques modifications et sauvegardez-les - en fermant la trame actuelle. Le problème de mai est dans ce fait, que le bouton de fermeture situé à l'intérieur du cadre sera éliminant. Et cela force Chrome WebDriver à accrocher. Mon premier essai était comme ça:Chrome WebDriver se bloque lorsque le cadre sélectionné est fermé
driver.findElement(By.xpath("//input[@id='insert']")).click();
driver.switchTo().defaultContent();
Mais il Hungs sur la première ligne après la commande executinh de clic comme cette commande cadre proche. Puis-je changer à cela (je JQuery sur la page):
driver.executeScript("$(\"input#insert\").click()");
driver.switchTo().defaultContent();
Mais cela conduit à même résultat. Puis-je utiliser cette solution:
driver.executeScript("setTimeout(function(){$(\"input#insert\").click()}, 10)");
driver.switchTo().defaultContent();
Et Hungs sur la deuxième ligne. Seule cette solution fonctionne:
driver.executeScript("setTimeout(function(){$(\"input#insert\").click()}, 100)");
driver.switchTo().defaultContent();
mais seulement si vous ne prenez pas en compte, qu'il est instable - un certain problème de synchronisation peut se produire.
Alors peut-on se demander s'il existe un moyen plus propre et plus stable pour sortir du cadre fermé?
P.S .: executeScript - Fonction auto-définie pour diminuer la quantité de code. Il suffit simplement d'exécuter quelques js sur la page.
Mise à jour:
J'ai réalisé que j'avais tort. Ce problème ne concerne pas toutes les iframes. Cela se produit quand une petite fenêtre popupMCE est utilisée. La situation est exactement comme dans this topic. Donc, il est douteux que je vais trouver une réponse ici, mais qui sait. La solution décrite ci-dessus aidera, mais seulement pour très peu de temps, ce qui signifie qu'après plusieurs secondes, le chromedriver passera à la prochaine commande.
Désolé, la description du pronblem n'était pas complète. – Dmitry