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

VB.NET Discussion :

Try en cascade


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut Try en cascade
    Bonjour,

    Y aurait'il quelques chose de plus propre que ca ? (je n'ai rien trouvé sur le net)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
                   Try                
                   m.all.Item("Login").Value = Username.ToLower
                   Catch ex As Exception
                        Try
                            m.all.Item("loginForm:login").Value = Username()
                         Catch ex1 As Exception
                            Try
                                m.all.Item("ui_Login_UserName").Value = Username()
     
                            Catch ex2 As Exception
                                Try
                                    m.all.Item("plog).Value = Username()
                                Catch ex3 As Exception
     
                                End Try
                            End Try
                        End Try
                    End Try
    Merci.

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    je sais pas quels objets/accesseurs tu utilises mais ne serait-il pas plus malin de vérifier que m.all.Item("id") te renvoie quelque chose,
    plutôt que d'accéder à son attribut Value en attendant une éventuelle exception ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Oh que oui il y a mieux, si je ne me trompe pas, tu teste l'existence de certains Items...
    Alors testons les avant de les utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    If  not m.all.Item("Login") Is Nothing Then 
           m.all.Item("Login").Value = Username.ToLower
     
    Else If not m.all.Item("loginForm:login") Is Nothing Then 
           m.all.Item("loginForm:login").Value = Username()
     
    Else If not m.all.Item("ui_Login_UserName") Is Nothing Then 
           m.all.Item("ui_Login_UserName").Value = Username()
     
    Else If not m.all.Item("plog") Is Nothing Then 
           m.all.Item("plog").Value = Username()
     
    Else 
          Throw new Exception ("Probleme")
     
    End If
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Aussi simple que ça. J'y ai même pas pensé.

    Cela fonctionne très bien, merci mactwist69 .
    Pour répondre à jopopmk , le parent, c'est Document de internet.application.

    Je clos le sujet.

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par mennix Voir le message
    Aussi simple que ça. J'y ai même pas pensé.

    Cela fonctionne très bien, merci mactwist69 .
    Pour répondre à jopopmk , le parent, c'est Document de internet.application.

    Je clos le sujet.
    Pas besoin de me répondre ^^, mon message (qui a la même teneur que celui de mactwist sauf qu'il faut te démerder pour le coder toi-même) n'avait pas besoin de ces précisions. C'était plus une mise en perspective supplémentaire.

    Bon dev
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Je ré-ouvre le sujet.
    en prenant exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If Not m.all.Item("ok") Is Nothing Then
                        m.all.Item("ok").Click()
                    ElseIf Not m.all.Item("ui_Login_LoginButton") Is Nothing Then
                        m.all.Item("ui_Login_LoginButton").Click()
                    ElseIf Not m.all.Item("html:body:login:loginForm:loginButtonBlock:validButton") Is Nothing Then
                        m.all.Item("html:body:login:loginForm:loginButtonBlock:validButton").Click()
                    End If
    le pere de m est le document d'une page web via internet.application.
    En gros, je simule le click sur un bouton, ou je connais pas au depart, la page web ou l'utilisateur sera (3 pages max) donc 3 noms de bouton differents.


    La redondance du texte, me gene alors j'ai ecris cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
         Dim valideClick = "ok,ui_Login_LoginButton,html:body:login:loginForm:loginButtonBlock:validButton"
     
                    For Each Cmd In valideClick.Split(",")
                        If Not m.all.Item(Cmd) Is Nothing Then m.all.Item(Cmd).Click() : Exit For
                    Next
    et la, ca ne marche plus. j'ai essayé de nommé ValideClick par string ou objet, mais ca ne fonctionne pas, je pense que cela vient du type de ma variable cmd.
    Là je coince.

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    J'ai jamais essayé un truc comme ça, mais de toute façon, il faut toujours typer fortement... Même dans les boucles.

    Pour typer dans la boucle, il faut ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    Dim valideClick = "ok,ui_Login_LoginButton,html:body:login:loginForm:loginButtonBlock:validButton"
     
                    For Each Cmd As String In valideClick.Split(",")
                        If Not m.all.Item(Cmd) Is Nothing Then m.all.Item(Cmd).Click() : Exit For
                    Next
    Mais aucune idée de si ça marche
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Et tu n'as mis que 2 virgules dans ton truc...
    et le split c'est pas très beau juste pour gérer... une liste finalement

    Créer directement une liste de string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ListButtons as New list (Of String) From {"ok","toto"}
    For Each Cmd As String In ListButtons 
             If Not m.all.Item(Cmd) Is Nothing Then m.all.Item(Cmd).Click() : Exit For
    Next
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    .contains
    et ne faire qu'une fois la détection de quelle page c'est pour enchainer le cas trouvé directement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Bonjour à tous,

    mactwist69

    Merci Mactwist69, pour la commande New List, étant sur un VB2008 (version portable au délà, ca ne veut pas), j'ai ajouté New string.

    Bon alors voila, le code fonctionne, un truc bizarre, si je ne rajoute dans le directCast .tostring de la variable CMD, ca ne fonctionne pas, et fait planter IE.
    Pourtant dans le For Each, CMD a bien été déclaré au format STRING.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim ListButtons As New List(Of String)(New String() {"ok", "ui_Login_LoginButton", "html:body:login:loginForm:loginButtonBlock:validButton"})
                    For Each Cmd As String In ListButtons
                        Dim hElm As Object = DirectCast(m.all.item(Cmd.ToString), Object)
                        If Not hElm Is Nothing Then hElm.Click() : Exit For                    
                    Next
    Bizarre!.


    Pol63 :
    Ton idée m'interresse, qu'entends tu par Contains ? je devrais parcourir quoi ? le InnerText et trouver par mot clé , ce qui m'orienterait sur la bonne commande a clicker sur la page Web ?

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    en général tout ce qui a .item a .contains

    donc ca serait if m.all.contains("machin") then m.all.item("machin") = ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Je vais essayer.
    Mais pas sur que cela fonctionne, vu que Item est un Objet de type, HtmlElement, qui lui même est composé d'autres objets.
    Dans tout les cas, avec cette méthode, je dois toujours balayer ma liste de mot clé. Je suis pas sur d'être gagnant dans la rapidité d'execution.
    A voir.

  13. #13
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    la rapidité n'est pas ce dont on te parle
    la rapidité ne sera pas affecté visiblement
    sinon il doit y avoir un getelementby et tester ensuite si nothing
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. peut-on cascader les Try..except ?
    Par clavier12AZQSWX dans le forum Général Python
    Réponses: 2
    Dernier message: 07/03/2014, 07h09
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  4. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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