J'utilise des tests SELENIUM 2 (écrit en C #) qui choisissent des valeurs à partir d'un contrôle "SELECT". La sélection provoque un post-retour sur le serveur, qui met à jour l'état de la page. J'effectue donc une attente manuelle ( ci-dessous est le code de l'échantillon que j'ai essayé .... p> // webDriverwait p> essayé aussi: p> // implicitement: p> // attente explicite: p> thread.sleep code>) après avoir choisi une valeur pour attendre que la page soit modifiée. Et cela fonctionne bien avec le fil.sleep. Toutefois,
thread.sleep code> est une mauvaise idée à utiliser avec le nombre de bonnes raisons pour que je sorte tout mon
thread.sleep code> ligne de code puis tous mes cas de test tombent en morceaux Et j'ai essayé webdiverwait, implicitement et explicitement aucun travaille et très frustration
3 Réponses :
Essayez d'utiliser
new WebDriverWait(driver, 30).until(ExpectedConditions.presenseOfElementLocated(byLocator));
Voici ce qui fonctionne pour moi -> vous pouvez également faire par identifiant -> p> sans voir plus de votre code, il sera difficile de déterminer pourquoi cela ne fonctionne pas. p> p>
laissez-moi savoir quel plus de code vous voulez pour que je puisse la coller, et laissez-moi essayer
Je trouve une solution avec Stackoverflow :) et cela fonctionne:
click on partialLinkText("Exit") remote.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS) remote.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS) // Thread.sleep(7000) // for js-work (new WebDriverWait(remote, 245)).until(presenceOfElementLocated(By.partialLinkText("""Entry for > technician"""))) // Thread.sleep(3000) // for js-works