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 :

Remplir un fichier html (ou web) via une application en VB


Sujet :

VB.NET

  1. #1
    Membre averti Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Par défaut Remplir un fichier html (ou web) via une application en VB
    Bonjour à tous,
    Je m'appelle Camille, je suis marin et j'ai longtemps hésité à venir poster sur votre forum. J'ai fait de nombreuses recherches mais mon niveau de VB est trop limité pour comprend les codes et scripts que je vois passer et qui surement pourraient répondre à mon problème .. alors me voila, je saute le pas en posant mes questions Je poserais mes questions une à une histoire de prendre le temps de digérer toutes les infos. J'ai des notions de base mais je reste autodidacte et mon expérience ne provient que de bidouillages en tous genre et de nombreuses lectures de Tutorial.

    OBJECTIFS:
    Sur les navires, il m'est demandé de remplir des rapports pour les affréteurs. C'est rapport sont des pages "web" avec des champs et des boutons. Jusque la rien de très compliqué. MAIS ce qu'il y a dans ces rapports demandent pas mal de calculs, que j’effectue avec un tableau excel remplit de formule.
    Le but serait de fait un petit programme en VB pour "remplir" les champs de la page web et cliquer sur ses boutons...
    Sur la page web, les champs et les boutons sont inclus dans des <Div> avec des "id" nommés et connus (rien de top secret).

    QUESTIONS (étape par étape) [Edité le 04/03/2018]:
    1) Comment "cliquer" sur un bouton connu de la page web en appuyant sur un bouton VB ? [Résolu]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each a As HtmlElement In WebBrowser1.Document.All
                If a.GetAttribute("name") = "Noonreport" Then a.InvokeMember("Click")
            Next
    2) Comment ne pas avoir d'erreur lors du chargement de la page web ?

    Je mettrais à jours mon post au fur et a mesure de vos réponses. En espérant ne pas vous prendre trop de votre temps.
    Merci d'avance.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    pour remplir une page web le plus simple est de poser un webbrowser sur le form/window
    quand le chargement depuis une url est terminé il y un évènement, de là tu peux récupérer le document chargé, et il y a des dll qui permettent de manipuler le document (mshtml par exemple)

    google : mshtml search by id
    y a de liens où l'on voit le code qui sert à cliquer sur un bouton, et ca parle même des "concurrents" de mshtml
    (le c# est plus courant et peut etre traduit en vb.net)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Par défaut
    Merci à toi Pol63.
    J'ai donc fait des recherches en suivant tes indications j'ai finit par réussir avec un petit bout de code simple:
    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
    Public Class Form1
        Private Sub btnGO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGO.Click
            WebBrowser1.Navigate(txtUrl.Text)
            WebBrowser1.ScriptErrorsSuppressed = True
        End Sub
     
        Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
            WebBrowser1.Stop()
        End Sub
     
        Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefresh.Click
            WebBrowser1.Refresh()
        End Sub
        Private Sub Test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Test.Click
            For Each a As HtmlElement In WebBrowser1.Document.All
                If a.GetAttribute("name") = "Noonreport" Then a.InvokeMember("Click")
            Next
        End Sub
    End Class
    Il s'agit d'un petit "Webbrowser" avec trois bouton : Go / Stop et Refresh.
    J'ai ajouter un bouton "Test_click" pour mon interaction avec la dite page internet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each a As HtmlElement In WebBrowser1.Document.All
                If a.GetAttribute("name") = "Noonreport" Then a.InvokeMember("Click")
            Next
    Ce code la me permet d'aller "chercher" l’élément sur lequel je veux "cliquer".

    PROBLEME:
    Vous avez du remarquer le "WebBrowser1.ScriptErrorsSuppressed = True"... en effet, la page que je charge me donne des erreur de .js et comme par hasard le bouton sur lequel je veux appuyer n’apparaît pas... trés certainement dû à ces erreurs...

    QUESTION:
    Peut-on régler ces erreurs de chargement de page ? Et si non, comment faire pour avoir accès au fameux bouton ?

  4. #4
    Membre averti Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Par défaut
    Bon, après rechercher et de nombreux essais je suis parvenue à installer le EO.webbrowser.webview et à afficher mon fichier sans erreur de script.
    Mais comme si cela était simple les commandes que je cite au dessus dans mon problème N°1 ne marche pas... Et donc impossibilité de "contrôler" ma page web comme je le veux en remplissant des champs et en cliquant sur les liens...

    Il y a un équivalence du genre webView1.EvalScript mais impossible de faire quoi que se soit avec ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each a As HtmlElement In WebBrowser1.Document.All
       If a.GetAttribute("name") = "Noonreport" Then a.InvokeMember("Click")
    Next
    Se transforme en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each a As HtmlElement In webView1.EvalScript("Document.All")
       If a.GetAttribute("name") = "Noonreport" Then a.InvokeMember("Click")
    Next
    mais la...
    Nom : erreur.png
Affichages : 565
Taille : 159,4 Ko

    J'ai bien essayé de mettre ce EvalScript un peu partout en vain...
    J'ai déjà passé beaucoup de temps dessus auriez-vous des pistes ?

  5. #5
    Membre averti Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Par défaut
    Bon en résumer de mes tentatives :
    Webkit EO => Impossible d’interagir avec le webbrowser car pas d'équivalent de getElementById ou autres...
    Webkit Gecko = > Xulrunner est une plait à mettre en place... et malgré de nombreux essai, il reste une erreur au dessus de mes moyens
    Nom : erreur.png
Affichages : 540
Taille : 31,6 Ko
    Webkit Cairo => Mise en place flou sans tutoriel clair (pour mon niveau en tous cas).

    En avez-vous d'autre qui puisse charger la page sans erreur de js et qu'on puisse interagir avec ses éléments (bouton/champ etc...)
    Voila :p je continue de chercher de mon coté dans tous les cas.

  6. #6
    Membre averti Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Par défaut
    Enfin !!! J'ai trouvé !
    Alors après avoir essayer tous les SDK du monde ou presque... J'ai réussit à installer, lancer et contrôler "Awesomium" !
    Donc le code donne cela (Essai sur la page Google):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Class Form1 
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            WebControl1.ExecuteJavascript("document.getElementById('lst-ib').value ='Bob'") 'Champ de recherche
            System.Threading.Thread.Sleep(100) 'pause pou mon internet de navire très très mou ...
            WebControl1.ExecuteJavascript("document.all('btnK').click()") 'Appui sur le bouton voulu
     
        End Sub
    End Class
    Prochaine étape :
    - Mettre en place une petite base de donné sous .txt pour ne pas perdre certains éléments récurrents, autrement dit un sauvegarde d'un tableau de coordonnée.

    PS: impossible de modifier mon premier message le "modifier message" n'est plus la ... surement du au "like" qui doit verrouiller le post. Dommage je voulais centraliser les infos dans le post N°1 pour clarifier mes avancées.

  7. #7
    Membre averti Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Par défaut
    Bon. Encore un mur.

    Problème :
    Les boutons sur lequel je veux "cliquer" ne sont pas identifiés que par une "class" mais aussi par un "data-tab"...
    Code Html du bouton emmerdant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <a class="tab" data-tab="Speed" title="Set Speed" href="xxx"><img src="spd.png"></a>
    <a class="tab" data-tab="Course" title="Set Course" href="xxx"><img src="crs.png"></a>
    Mon ébauche ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascript("document.GetElementByClass('tab').all('Speed').click()")
    Mon soucis vient du fait qu'il n'y a pas de GerElementBy data-tab ... le document.all('Set Speed') ne marche pas ...
    Si encore j'arrivais à mettre un If genre:
    if Document.GetAttribute("data-tab") = "Speed" Then document.InvokeMember("Click")
    Mais avec le ExecuteJavascript je ne sais pas comment le faire...

    Voila, cela fait des jours que je suis dessus et j'avance d'un pas pour reculer de deux. Je vois bien que les gens passe regarder le post mais personne ne réagit...

Discussions similaires

  1. Récupérer un fichier sur un ftp via une application mobile
    Par superslinky dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/06/2015, 13h07
  2. Accéder à un site web via une application Java
    Par SmidaAhmed dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 11/01/2013, 12h55
  3. Ouvrir un fichier local , via une application Web
    Par Panneau dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 22/05/2008, 15h20
  4. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  5. Problème pour ouvrir des fichiers .exe et .jar via une page html
    Par coyaote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 12h28

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