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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé 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 : 43
    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
    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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    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 éprouvé 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 : 43
    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
    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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    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 éprouvé 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 : 43
    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
    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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    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 éprouvé 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 : 43
    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
    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

  8. #8
    Expert confirmé

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

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    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 !).

  9. #9
    Membre éprouvé 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 : 43
    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
    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.

  10. #10
    Membre éprouvé 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 : 43
    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
    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.

+ 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, 09h51
  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, 13h42
  3. Réponses: 2
    Dernier message: 30/08/2005, 16h08

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