0
votes

Python sélénium ne peut pas trouver l'élément même avec attendre

J'essaie d'envoyer du texte dans un champ de saisie, mais le sélénium n'est pas en mesure de trouver l'élément. strong> xxx pré>

J'ai essayé d'utiliser le XPATH, le XPath complet et l'ID pour la localiser, mais cela continue à me donner une erreur qui indique qu'il ne peut pas trouver l'élément selenium.common.exceptions.timeoutException code> p>

Un extrait de l'élément HTML p>

p>

<input class="iceInpTxt testBox" id="headerForm:jumpto" maxlength="40" name="headerForm:jumpto" onblur="setFocus('');iceSubmitPartial(form, this, event);" onfocus="setFocus(this.id);" onkeyup="iceSubmit(form,this,event);" onmousedown="this.focus();" type="text" value="">


2 commentaires

Partagez HTML dans le format de texte ou fournissez l'URL


Je sais ce n'est pas une solution, mais vous pouvez utiliser chrome.google. Com / WebStore / Détail / Selenium-Ide / ... Pour capturer les étapes de test et voit probablement pourquoi son moment chronométré


3 Réponses :


0
votes

Si votre usecase implique d'appeler click () ou send_keys () en induisant webDriverwait au lieu de présence_of_element_located () Vous devez utiliser attendu_conditions comme element_to_be_clickable () comme suit:

Si efficacement, vous pouvez utiliser l'un ou l'autre des Stratégies de localisation :


1 commentaires

@Sisqobaker Checkout La réponse mise à jour et laissez-moi savoir le statut.



0
votes

C'est une bonne idée de vérifier si vous avez installé ou non un sélénium ou d'autres forfaits nécessaires. Utilisez pip pour vérifier votre version et voir s'il y a un bogue en ligne. S'il vous plaît laissez-moi savoir quelle version Python vous utilisez. Il est probable que le xpath que vous avez fourni était incorrect ou essayez peut-être d'augmenter la quantité de temps dans le 2e paramètre de webDriverwait (1st, 2e) . Il serait beaucoup plus utile que vous ayez un lien vers cette page HTML afin que je puisse vérifier votre xpath . Si vous souhaitez une aide supplémentaire, veuillez fournir votre page HTML.

EDIT: C'est quelque chose qui doit être reproduit afin de pouvoir être vérifié. Si vous avez essayé ce qui précède, je ne parviens pas à aider à moins que je vois le document HTML. Vous devez supprimer toutes les informations sensibles avant de le partager. Les autres éléments de votre code semblent être corrects.


3 commentaires

J'utilise Python Version Python 3.7.6. Je ne suis pas en mesure de fournir la page HTML car cela impliquerait de vous donner mes informations d'identification de connexion.


@Sisqobaker, à ce stade, je vous recommande de tester chaque élément de votre XPath . Utilisation EC.PRESENCE_OF_ELEMENT_LOCATED ((((xPath, ThePath) , premier test que le html est là (pour vérifier s'il est dans le bon format, je ne sais pas comment Vous avez accédé à votre HTML). Ensuite, vous faites corps / table etc. jusqu'à ce que vous arriviez à celui où il cesse de fonctionner.


@Sisqobaker Je ne vois aucun préjudice dans la fourniture du code HTML et dans le cœur de fournir au texte HTML pertinent basé sur le texte, vous n'avez pas besoin de fournir à vos informations d'identification de toute façon. Au contraire sans le HTML, vous n'obtiendrez pas non plus de réponse canonique ni que les contributeurs ne peuvent tester les localisateurs qu'ils souhaitent vous suggérer. Donc, fournir au HTML est une situation gagnant-gagnant pour les deux.



1
votes

élément a id , utilisez-le comme localisateur. Vérifiez si l'élément est à l'intérieur d'un iframe: xxx

Comment passer à iframe: xxx


2 commentaires

C'est dans un iframe. Que puis-je faire à ce sujet?


Utilisation du code dans la réponse Comment passer à iframe . Partager HTML de l'iframe