-1
votes

Comment effectuer une attente statique en sélénium à l'aide de Java?

C'est assez frustrant. Partout où je regarde que les gens continuent à me dire d'utiliser explicite, implicite et fluide. Ces attentes le font, vous pouvez donc faire une pause en fonction des éléments. Cependant, la convenir aux outils et aux options de la suppression des États-Unis et de l'enlèvement ne sont pas une bonne idée. Dans mon cornichon spécifique actuel, j'ai un bouton conçu pour disparaître si quelqu'un clique dessus trop rapidement. Cependant, il est également conçu pour se présenter immédiatement. Vous devez donc attendre jusqu'à ce qu'il apparaisse, puis attendez suffisamment de temps pour réussir, puis cliquez sur le bouton. Avec les suggestions, je suis donné qu'il est impossible. Un statique pause ou dormir doit être utilisé dans ce cas. Pour une raison quelconque, je ne peux même pas utiliser le sommeil de fil car il semble que cela ait été obsolète en Java 8 lui-même ou quelque chose.


3 commentaires

Quelque chose change dans le code HTML entre l'apparence du bouton et le bouton étant éligible pour cliquer? Et pourquoi pensez-vous que thrad.sleep () est obsolète en Java 8?


Je suggérerais une attente explicite d'attendre que le bouton apparaisse, puis un thread.sleep pour attendre la quantité minimale nécessaire pour vous assurer que celle-ci n'a pas été cliquée trop rapidement et ne disparaît pas dans ce scénario spécifique.


Aussi java 8 docs pour thread.sleep (il n'est pas obsolète) docs.oracle.com/javase/8/docs/api/java/lang/... serait bon d'avoir plus de détails sur l'erreur que vous voyez, pour vous aider avec le fil. Dormir une partie du problème


3 Réponses :


0
votes

attente implicite: xxx

attente explicite: xxx


0 commentaires

0
votes

Quelle est la source qui vous fait penser que Java.Lang.thread serait obsolète?

Donc, même dans le Java 11 docs Il n'est pas obsolète.

Donc, si vous voulez l'utiliser, n'hésitez pas. : -)


2 commentaires

Je n'arrive pas à faire que la commande n'arrête pas d'erreurs, peu importe les importations que j'utilise.


Veuillez afficher les importations que vous utilisez et les messages d'erreur correspondants et avertissements d'amortissement.



0
votes

éventuellement à travers les termes statiques attendez et Static Pause vous vouliez dire thread.sleep () qui est toujours utile à bien des égards.

Cependant, tout en exécutant vos tests à travers selenium induisant Sleep ne serait pas une solution élégante pour résoudre le problème comme induisant Thread.sleep (1000); dégradra l'ensemble des performances globales de l'exécution des tests . Vous pouvez trouver une discussion détaillée dans sélénium a besoin d'un sommeil avant d'aller à la page suivante .

Si vous devez induire waits est un bon moyen de commencer. Vous pouvez trouver une discussion détaillée dans Utilisation d'une attente implicite à Selenium . Cependant, comme les applications Web actuelles sont construites via JavaScript , angulaire , réactjs , etc. Explicit attend serait la voie à suivre.

Ainsi, avancez-vous, vous pouvez faire une transition vers Explicite attend . Vous pouvez trouver une discussion détaillée dans Remplacer l'attente implicite avec attente explicite (selenium webdiver & java) .

À ce stade, implémenter Une attente fluide sera beaucoup plus facile et vous trouverez une discussion détaillée dans implicite vs explicite contre fluent attend .


2 commentaires

Utilisation de thread.sleep () Pour attendre des éléments, etc. n'est pas une bonne pratique, mais si vous devez faire du temps quelque chose de spécifique sur la page en tant que OP, c'est bon à utiliser. L'utilisation des attentes implicites n'est pas une meilleure pratique par les contributeurs de sélénium, comme je l'ai déjà mentionné. Les attentes explicites et les attentes fluides sont fondamentalement les mêmes, les attentes explicites ne sont que des attentes préemballées et les deux sont des "meilleures pratiques".


+1 N'utilisez jamais d'attentes implicites, utilisez toujours des éléments explicites (les attentes explicites sont construites sur des attentes fluides, je suis d'accord qu'ils sont la même chose à toutes fins utiles. Une attente fluide n'est qu'une attente explicite avec quelques options de configuration supplémentaires)