IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web avec .NET Discussion :

[Expert]C# selenium "Element is no longer valid"


Sujet :

Développement Web avec .NET

  1. #1
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut [Expert]C# selenium "Element is no longer valid"
    Bonjour,

    Pour information, environnement de programmation :

    Visual Studio 2010

    Framework .Net 4.0

    Selenium WebDriver 3.4.0

    Selenium.InternetExplorer.WebDriver 3.4.0

    Selenium WebDriver Support Classes 3.4.0

    -----------------------------------------

    Je précise que c'est la première que j'utilise Selenium.

    Quand j’exécute le code suivant, dans un try catch, "3 fois sur 4", j'ai l'erreur "Element is no longer valid" sur la dernière ligne "SelectElement selectedElement = new SelectElement(DDLB_machin);"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    IWebElement DDLB_machin = Driver.FindElementByName("...");
     
                    //code pour sélectionner une valeur dans la dropdown listbox
     
                    //avec ou sans, et même en changeant la valeur temporelle, le problème persiste
                    WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(2));
     
                    DDLB_machin = Driver.FindElementByName("...");
     
                    SelectElement selectedElement = new SelectElement( DDLB_machin);
    Quand le programme continue son exécution, j'ai à nouveau le même problème avec le code ci-dessous, au moment du click sur le bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     IWebElement BTN_truc = Driver.FindElementById("...");
     
                    if (BTN_truc != null)
                    {
                        BTN_Ctruc.Click();
    Merci de m'indiquer comment faire pour que cette erreur "Element is no longer valid" disparaisse.

    Cordialement
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    t'as ajouté la référence "sélinium" dans les dll. Il faudra bien la télécharger et l'ajouter pour que ça marche. Ensuite, il faudra rajouter dans le code les inclusions nécessaires.

  3. #3
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut
    Citation Envoyé par samuel44 Voir le message
    t'as ajouté la référence "sélinium" dans les dll. Ensuite, il faudra rajouter dans le code les inclusions nécessaires.
    Les dll sont bien référencées dans le projet Visual Sutdio

    et dans mon code j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    using OpenQA.Selenium;
    using OpenQA.Selenium.IE;
    using OpenQA.Selenium.Support.UI;
    using OpenQA.Selenium.Interactions;
    De plus J'ai écrit que l'erreur "Element is no longer valid" apparait "3 fois sur 4", soit, pour paraphraser "des fois ça marche, des fois ça marche pas"

    D'où ma perplexité et ma demande d'aide
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    c'est un problème assez courant (j'ai remarqué ça, en faisant la recherche sur google).
    https://stackoverflow.com/questions/...o-longer-valid

    pour résoudre le problème:

    http://learn-automation.com/how-to-s...ium-webdriver/

  5. #5
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut
    Bonjour

    si tu lis bien mon code, tu verra que je fais déjà ce qui est préconisé dans ces liens, j'utilise déjà le "Driver.FindElement ...", mais le problème persiste.

    J'ai déjà passé quelques jours à chercher sur Internet, j'ai besoin des connaissances d'un spécialiste dans ce domaine.

    Cordialement
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Je m'excuse d'avoir essayé de t'aider.

    Par contre, tu me dis que "tout existe dans ton code".

    Je ne vois pas ni refresh ( pour rafraîchir les éléments, ni une boucle) : comme indiqué ici : http://learn-automation.com/how-to-s...ium-webdriver/

    Cordialement,

  7. #7
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut
    Citation Envoyé par samuel44 Voir le message

    Je m'excuse d'avoir essayé de t'aider.

    Pas la peine de t"excuser, c'est plutôt à moi de le faire, j'ai essayé tellement de trucs trouvés "ici et là" sur internet, mais rien qui soit fiable à 100%.

    Du coup, je tourne en rond et ce m'énerve de plus en plus

    Citation Envoyé par samuel44 Voir le message
    Je ne vois pas ni refresh ( pour rafraîchir les éléments, ni une boucle) : comme indiqué ici : http://learn-automation.com/how-to-s...ium-webdriver/
    J'ai essayé tellement de variantes, que j'ai mis le code "du moment", j'aurais dû expliquer toutes mes tentatives. Désolé

    Vu que je dois impérativement exécuter ce code, en désespoir de cause, et si c'est possible, je crois que je vais adopter la méthode suivante, même si je pense que c'est du code "sale" :

    Utiliser une fonction avec un try catch pour capturer l'erreur, et, dans le catch, faire un appel à cette fonction

    Dans la logique ça donnerai un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    fonction truc ()
    {
         try
        {
             //instructions
        }
     
        catch
       {
          //appel de la fonction truc
       }
    }
    Cordialement
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  8. #8
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Est-ce qu'on peut avoir plus d'info :
    • un exemple simple reproduisant le problème ;
    • l'URL de la page où le problème se présente (en espérant que ce ne soit pas un intranet !).
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  9. #9
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut
    Bonsoir

    Citation Envoyé par François DORIN Voir le message
    un exemple simple reproduisant le problème ;
    C'est en grande partie le souci rencontré, pour exactement les mêmes lignes de code, pendant l’exécution, l'erreur est généré 1 fois, puis tout se passe bien 3 fois, puis l'erreur apparait 2 fois de suite, puis aucun souci les 5 fois suivantes ...

    Citation Envoyé par François DORIN Voir le message
    l'URL de la page où le problème se présente (en espérant que ce ne soit pas un intranet !).
    Le problème se présente aléatoirement sur plusieurs pages d'une application "web", utilisable uniquement vie l'intranet de l'entreprise.
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  10. #10
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par shadowmoon Voir le message
    C'est en grande partie le souci rencontré, pour exactement les mêmes lignes de code, pendant l’exécution, l'erreur est généré 1 fois, puis tout se passe bien 3 fois, puis l'erreur apparait 2 fois de suite, puis aucun souci les 5 fois suivantes ...
    Ca je l'ai bien compris. S'il faut l'exécuter 10 fois pour avoir le soucis, alors on l'exécutera 10 fois. Il faut bien comprendre que nous ne sommes pas devin. Aussi, nous avons besoin de nous placer dans un contexte aussi proche que possible du votre pour vous aider à résoudre votre problème. Sans avoir un exemple simple permettant de reproduire de manière aléatoire le problème, cela me semble difficile, dans la mesure où des pistes vous ont déjà été suggérés et qu'a priori, elles n'aboutissent pas.


    Citation Envoyé par shadowmoon Voir le message
    Le problème se présente aléatoirement sur plusieurs pages d'une application "web", utilisable uniquement vie l'intranet de l'entreprise.
    Dans ce cas, est-il possible d'avoir le code HTML d'une page où le problème se produit ? Et éventuellement des fichiers javascript associés. L'objectif est de savoir si le DOM du document est manipulé côté client, ce qui pourrait expliquer les erreurs rencontrées ainsi que leur caractère aléatoire.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  11. #11
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut
    Bonjour

    Pour information, l'expert Sélénium de l'entreprise est revenu de congé en début de semaine et après en avoir discuté avec lui, nous avons mis en place la solution suivante : une boucle while pour essayer de faire l'action jusqu'à ce quelle se fasse ou qu'un time out arrive à expiration, pour éviter une boucle sans fin.
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Selenium find elements
    Par YZYAZ dans le forum Bibliothèques tierces
    Réponses: 3
    Dernier message: 20/07/2016, 10h51
  2. [W3C] Pb document type does not allow element "BODY" here W3C validator
    Par megapacman dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 22/06/2006, 14h42
  3. Réponses: 2
    Dernier message: 30/08/2005, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo