none
Cliquer sur un bouton (IE) RRS feed

  • Question

  • Bonjour,

    Je souhaite automatiser une tâche : me connecter à l'intranet, remplir mes identifiants et valider le tout.

    le problème de la page est que pour le bouton, il n'y a pas d'ID ni de nom. donc je ne peux pas le sélectionner puis cliquer.

    Connaissez-vous une méthode pour sélectionner un objet sans son nom ni son ID ?

    j'arrive à insérer le texte pour l'identifiant et le mot de passe via powershell mais le bouton m'est inaccessible...

    voici le code source de la page web :

    <html>
    <head>
    
    <script language="JavaScript" type="text/javascript">
    <!-- 
    function doError(){return true;};window.onerror=doError;
    // -->
    </script>
    <title>Connexion au serveur</title></head>
    <body text="#000000" onLoad="document.forms[0].username.focus(); document.forms[0].username.select();" bgcolor="#FFFFFFFF">
    
    <form method="post" action="/names.nsf?Login">
    <table border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFCC">
    <tr><td width="100">&nbsp;</td><td><h1>Connexion au serveur</h1>Veuillez entrer votre nom d'utilisateur et votre mot de passe<br>
    </td><td width="100">&nbsp;</td></tr>
    
    <tr><td height="20" colspan="3">&nbsp;</td></tr>
    
    <tr><td width="100" align="right">Nom&nbsp;d'utilisateur :&nbsp;&nbsp;</td><td>
    <input type="text" size="20" maxlength="256" name="username"></td><td>&nbsp;</td></tr>
    
    <tr><td width="100" align="right">Mot de passe :&nbsp;&nbsp;</td><td>
    <input type="password" size="20" maxlength="256" name="password">
    <input type="hidden" name="redirectto"</td><td>&nbsp;</td></tr>
    
    <tr><td height="20" colspan="3">&nbsp;</td></tr>
    
    <tr><td width="100">&nbsp;</td><td>
    <input type="submit" value="Connexion"></td><td>&nbsp;</td></tr>
    
    <tr><td height="20" colspan="3">&nbsp;</td></tr>
    </table>
    </form>
    </body>
    </html>
    Merci pour vos retour.


    mercredi 16 octobre 2013 14:44

Réponses

  • Salut,
    Tu as aussi la méthode GetElementsByTagName dans ton objet ($doc | get-member). Ainsi le code suivant répond à ton besoin :

    $ie = new-object -com "InternetExplorer.Application"
    $ie.navigate("<ton url>")
    $ie.visible = $true
    $doc = $ie.document
    $btn= $doc.getElementsByTagName('input') | Where-Object {$_.value -Match "Connexion"}   
    $btn.click()
    

    Avec l'instruction 

    $btn= $doc.getElementsByTagName('input') 

    Tu récupère la liste de tout les input de ta page. Tu n'as plus qu'a filtrer sur celui qui te convient "soit son type=submit, soit sur sa value qui a plus de chance d'être unique.

    vendredi 27 décembre 2013 14:39

Toutes les réponses

  • Salut,
    Tu as aussi la méthode GetElementsByTagName dans ton objet ($doc | get-member). Ainsi le code suivant répond à ton besoin :

    $ie = new-object -com "InternetExplorer.Application"
    $ie.navigate("<ton url>")
    $ie.visible = $true
    $doc = $ie.document
    $btn= $doc.getElementsByTagName('input') | Where-Object {$_.value -Match "Connexion"}   
    $btn.click()
    

    Avec l'instruction 

    $btn= $doc.getElementsByTagName('input') 

    Tu récupère la liste de tout les input de ta page. Tu n'as plus qu'a filtrer sur celui qui te convient "soit son type=submit, soit sur sa value qui a plus de chance d'être unique.

    vendredi 27 décembre 2013 14:39
  • Bonjour,

    Avez-vous testé la solution proposée par moignon? Merci de nous tenir au courant!


    Marc Lognoul [Infrastructure Expert]

    My Site/Mon Site |  MyBlog [EN]  | Mon Blog [FR]  |  Twitter  |  LinkedIn

    vendredi 3 janvier 2014 14:49
    Modérateur
  • Je déterre le sujet car j'essaye de faire la même chose.

    Sur le site de google trends j'essaye de cliquer sur lien pour télécharger le lien CSV via PowerShell.

    Je peux le récupérer en entrant directement le lien URL mais le problème est que celui-ci expire au bout d'un moment.

    D'où mon intérêt pour cette méthode.

    Voici mon code  

    $url = "https://trends.google.fr/trends/explore?date=now%201-H&q=technet"
    $ie = New-Object -com internetexplorer.application 
    $ie.visible = $true 
    $ie.navigate($url)
     
    while ($ie.Busy -eq $true) 
    { 
        Start-Sleep -Milliseconds 1000
    } 
    $ie.Document.getElementById("CSV").Click()

    Mon problème est que j'arrive pas à trouver l'ID. J'ai essayé avec CSV mais marche pas. Et j'ai cette erreur:

    Method invocation failed because [System.DBN
    At line:5 char:1
    + $ie.Document.getElementById("CSV").Click()
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperati
        + FullyQualifiedErrorId : MethodNotFound

    Voilà merci d'avance 


    • Modifié Atlante21 mardi 7 août 2018 10:01
    mardi 7 août 2018 09:58