Interragir avec un serveur web sans naviguateur

Vous voulez de l'aide ? Postez ici :)
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Interragir avec un serveur web sans naviguateur

Post by Sergent-Quentin »

Bonjour,

je ne sais pas si le titre est approprié avec ce que je cherche à faire mais on verra bien ^^

En faite je voulais savoir si il était possible d'effectuer des actions sur un site web sans ouvrir le navigateur, comme par exemple remplir un formulaire, une inscription, etc...

Je crois qu'on appelle ça WebSocket

Étant totalement novice dans la matière je voulais savoir quel est le niveau de difficulté, avoir le lien d'un cours pour apprendre et si on peut le faire via une action "code" d'actionna.

Je vous remercie

Cordialement

Sergent-Quentin
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Interragir avec un serveur web sans naviguateur

Post by Jmgr »

Tu as forcément besoin d'un navigateur pour "dessiner" la page. Parfois on peut intégrer un navigateur à un logiciel, c'est possible avec Qt (et donc Actiona).
Par exemple :

Code: Select all

    var dialog = new QDialog();
    var layout = new QHBoxLayout();

    var webView = new QWebView();
    webView.load(new QNetworkRequest(new QUrl("https://duckduckgo.com")));

    layout.addWidget(webView, 0, 0);

    webView.loadFinished.connect(function (ok)
    {
       var mainFrame = webView.page().mainFrame();

       var element = mainFrame.findFirstElement("#search_form_input_homepage");
       element.setAttribute("value", "donald duck");

       var timer = new QTimer();
       timer.interval = 1000;
       timer.singleShot = true;
       timer.timeout.connect(function()
       {
          element = mainFrame.findFirstElement("#search_form_homepage");
          element.evaluateJavaScript("this.submit();");
       });
       timer.start();
    });

    dialog.setLayout(layout);
    dialog.exec();
Je crois qu'on appelle ça WebSocket
Non WebSocket c'est quand tu développes un site Web et que tu veux avoir une page qui se connecte sur un serveur distant.
"My software never has bugs. It just develops random features."
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Interragir avec un serveur web sans naviguateur

Post by Sergent-Quentin »

Bonjour,

Merci pour le code je l'ai tester, c'est assez intéressant :)

Quelques questions :

1 ) Est-il possible d'effectuer des actions sur une page web sans que la souris et le clavier sois monopolisé via une action "code" actiona ? ( hormis selenium )

2 ) Imaginons un formulaire d'un site internet, on le modélise à notre goût dans une fenêtre actiona avec Qt, une fois que j'ai rempli le formulaire dans ma fenêtre avec actiona et que je clique sur un bouton "envoyer", peut-il se connecter et envoyé les données au serveur web ?

Merci beaucoup

Cordialement

Sergent-Quentin
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Interragir avec un serveur web sans naviguateur

Post by Jmgr »

1) Oui c'est exactement ce que fait le code que j'ai posté au dessus. Après si tu parles d'un navigateur externe et non celui intégré à Actiona alors non ce n'est pas possible.
Une solution alternative c'est d'utiliser une machine virtuelle et de faire tourner le script dessus.

2) Oui, le navigateur Web intégré à Actiona peut charger n'importe quelle page Web, qu'elle soit en ligne ou en local sur ton ordinateur. Ce qui se passe lorsque tu cliques sur le bouton envoyer ça ne dépend normalement pas d'Actiona mais de la page Web. Tu dois sans doute pouvoir "intercepter" le clic vers le bouton à partir d'Actiona et faire quelque chose dans le script courant.
"My software never has bugs. It just develops random features."
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Interragir avec un serveur web sans naviguateur

Post by Sergent-Quentin »

Jmgr wrote:Après si tu parles d'un navigateur externe et non celui intégré à Actiona alors non ce n'est pas possible.
Ah d'ac, remarque importante :)
Jmgr wrote:Oui c'est exactement ce que fait le code que j'ai posté au dessus.
Donc en clair, on peut ajouter une série d'instruction en code qui peut écrire du texte dans un champ, cocher une case ou autre sans utiliser la souris et le clavier ? Comme ce bout de code ci-dessous ? :

Code: Select all

 var element = mainFrame.findFirstElement("#search_form_input_homepage");
       element.setAttribute("value", "donald duck");
Jmgr wrote:Tu dois sans doute pouvoir "intercepter" le clic vers le bouton à partir d'Actiona et faire quelque chose dans le script courant.
Donc en faite si je remplis le champ d'un mail par exemple sur ma fenêtre Qt (qui sera modéliser à mon goût ) et que je clique sur "envoyer", ça sera pareil que si je le faisais sur le site depuis un navigateur externe ?

Merci pour tes réponses :)

Cordialement

Sergent-Quentin
etideval
Posts: 47
Joined: 19 Apr 2015, 18:24

Re: Interragir avec un serveur web sans naviguateur

Post by etideval »

c'est intéressant, j'ignorais qu'il y avais un navigateur intégré à actiona, peut t-il lire des pages ôu il y as des jeux en flash Player ?

""1 ) Est-il possible d'effectuer des actions sur une page web sans que la souris et le clavier sois monopolisé via une action "code" actiona ?

2 ) Imaginons un formulaire d'un site internet, une fois que j'ai rempli le formulaire dans ma fenêtre avec actiona et que je clique sur un bouton "envoyer", peut-il se connecter et envoyé les données au serveur web ?""

même questions mais sur une fenêtre internet avec un jeux flash player ?

peut-on simulé l'envois d'une requette ? (directement dans flash player ou indirectement via le navigateur ?)

sa ne me parais pas possible mais si c'est possible je vais devoir apprendre à le faire !

2eme question peut-on dans le navigateur web intégré a actiona lancé des scripts javascript enregistré sur l'ordinateur ?
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Interragir avec un serveur web sans naviguateur

Post by Jmgr »

Donc en clair, on peut ajouter une série d'instruction en code qui peut écrire du texte dans un champ, cocher une case ou autre sans utiliser la souris et le clavier ? Comme ce bout de code ci-dessous ? :
Oui.
Donc en faite si je remplis le champ d'un mail par exemple sur ma fenêtre Qt (qui sera modéliser à mon goût ) et que je clique sur "envoyer", ça sera pareil que si je le faisais sur le site depuis un navigateur externe ?
Je ne comprends pas trop ce que tu veux dire. L'interface, qu'elle soit faite avec Qt ou que ce soit un site Web c'est la même chose au final : des champs de texte et des boutons. Après c'est à toi de décider ce qu'il se passe lorsque l'on clique sur le bouton.
c'est intéressant, j'ignorais qu'il y avais un navigateur intégré à actiona, peut t-il lire des pages ôu il y as des jeux en flash Player ?
Il me semble que les plugins du genre Flash/Java ne sont pas disponibles dans ce navigateur. A tester.
même questions mais sur une fenêtre internet avec un jeux flash player ?
Là par contre je ne pense pas.
peut-on simulé l'envois d'une requette ? (directement dans flash player ou indirectement via le navigateur ?)
Tu peux exécuter du code Javascript arbitraire dans la page chargée dans le navigateur intégré, donc tu peux faire tout ce qu'un site web ferait.
2eme question peut-on dans le navigateur web intégré a actiona lancé des scripts javascript enregistré sur l'ordinateur ?
Oui. Il suffit de charger le fichier avec l'action de lecture de fichier puis d'écrire un bout de code pour exécuter le Javascript sur la page chargée. Dans le code d'exemple que j'ai donné la fonction "evaluateJavaScript" prend en paramètre du code Javascript à exécuter sur la page chargée.
"My software never has bugs. It just develops random features."
etideval
Posts: 47
Joined: 19 Apr 2015, 18:24

Re: Interragir avec un serveur web sans naviguateur

Post by etideval »

j'ai testé et non flash player n'est pas installé

(juste changé sa a t'on code)

Code: Select all

    webView.load(new QNetworkRequest(new QUrl("http://shadowkings.goodgamestudios.com")));
peut-on ajouté un module au navigateur intégré à actiona ? ou faire en sort qu'il le support ?
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Interragir avec un serveur web sans naviguateur

Post by Sergent-Quentin »

Jmgr wrote: Donc en clair, on peut ajouter une série d'instruction en code qui peut écrire du texte dans un champ, cocher une case ou autre sans utiliser la souris et le clavier ? Comme ce bout de code ci-dessous ? :


Oui.
C'est ce que je cherche à faire et à apprendre :)
As-tu un lien d'un cours pour cela ?
Jmgr wrote:Je ne comprends pas trop ce que tu veux dire. L'interface, qu'elle soit faite avec Qt ou que ce soit un site Web c'est la même chose au final : des champs de texte et des boutons. Après c'est à toi de décider ce qu'il se passe lorsque l'on clique sur le bouton.
J'ai fait un petit schéma explicatif :p
Schéma.jpg
Schéma.jpg (53.48 KiB) Viewed 4368 times
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Interragir avec un serveur web sans naviguateur

Post by Jmgr »

peut-on ajouté un module au navigateur intégré à actiona ? ou faire en sort qu'il le support ?
Je viens de voir qu'on peut activer le Flash dans le navigateur intégré, il suffit d'utiliser la ligne suivante pour activer les plugins : (avant l'appel à la fonction load)

Code: Select all

webView.settings().setAttribute(QWebSettings.PluginsEnabled, true);
Il faut bien entendu avoir installé le plugin Flash à partir du site d'Adobe.
C'est ce que je cherche à faire et à apprendre :)
As-tu un lien d'un cours pour cela ?
Pas directement via le code d'Actiona, non. Mais ce que tu peux chercher c'est des exemples d'interaction avec le contenu d'une page Web via Javascript. Par exemple exécuter "this.submit();" sur une page Web va valider le formulaire actuel. Mais ça implique de connaître un peu de HTML également.
Je peux juste de rediriger vers la documentation des classes de Qt disponibles dans Actiona (regarde du côté de WebKit) et la documentation de Qt à ce sujet (plus complète mais orientée C++). Ce n'est pas idéal, mais tout ça est assez "expérimental" dans Actiona de toute façon, dans le sens où je considère que ça ne fait pas partie des fonctionnalités de base du logiciel et que si vous l'utilisez, vous savez ce que vous faites ;) Pour bien faire il faudrait avoir des tutoriels là-dessus mais je n'ai vraiment pas le temps. :/
J'ai fait un petit schéma explicatif :p
C'est pas trivial. Tu peux envoyer des données vers le serveur Web via l'action Téléchargement Web, mais encore faut-il que le formulaire que tu cherches à copier envoie les données en mode GET et non POST, comme le font la plupart des formulaires. Dans le cas contraire il te faudra utiliser des fonctions plus bas niveau (client TCP) pour envoyer les données. C'est vraiment compliqué.
Je pense que le plus simple c'est que tu fasses un formulaire Web et que tu l'affiche dans le navigateur Web intégré à Actiona. Et dans ce cas l'adresse où tu envoie les données (dans le champs "action" du formulaire) pointe vers le serveur Web. En gros que tu copie la page Web avec le formulaire que tu veux reproduire. C'est pas trivial non plus mais c'est déjà un peu plus facile.
"My software never has bugs. It just develops random features."
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Interragir avec un serveur web sans naviguateur

Post by Sergent-Quentin »

Jmgr wrote:je considère que ça ne fait pas partie des fonctionnalités de base du logiciel et que si vous l'utilisez, vous savez ce que vous faites ;)
Sans tutoriel de a-z c'est assez complique donc... ^^

Ce cours https://openclassrooms.com/courses/du-q ... c-qt-jambi, est-ce un peu la même chose ?
Jmgr wrote:Je pense que le plus simple c'est que tu fasses un formulaire Web et que tu l'affiche dans le navigateur Web intégré à Actiona. Et dans ce cas l'adresse où tu envoie les données (dans le champs "action" du formulaire) pointe vers le serveur Web
Comme tu le dis c'est déjà plus facile ^^, je vais plutôt voir de ce coté là, si jamais tu as le temps, peux-tu écrire un exemple stp ?

Merci d'avoir répondu à toutes mes questions :)

Cordialement

Sergent-Quentin
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Interragir avec un serveur web sans naviguateur

Post by Jmgr »

Ce cours https://openclassrooms.com/courses/du-q ... c-qt-jambi, est-ce un peu la même chose ?
Rien à voir, là c'est pour utiliser Qt avec du Java. Encore une fois, le Javascript n'a aucun rapport avec le Java. ;) C'est juste du marketing de la part des créateurs du Javascript parce qu'à l'époque où il a été créé le Java c'était "cool", donc avoir un langage qui commence par "Java" c'était "cool" également. J'ai vraiment envie de troller là-dessus mais je vais me retenir. :p
Comme tu le dis c'est déjà plus facile ^^, je vais plutôt voir de ce coté là, si jamais tu as le temps, peux-tu écrire un exemple stp ?
Un exemple de formulaire Web ? Bah là par contre tu peux en trouver à la pelle, par exemple : https://openclassrooms.com/courses/appr ... mulaires-8
"My software never has bugs. It just develops random features."
etideval
Posts: 47
Joined: 19 Apr 2015, 18:24

Re: Interragir avec un serveur web sans naviguateur

Post by etideval »

Impossible de lancé le téléchargement de l'installateur flash player dans la navigateur intégré.

De tout façon sa règle pas m'on problème sur win10 si on peut pas simulé l'envois de requêtes flash player vu que je peut pas passé par la simulation de clic.
Et mes connaissance ne sont pas assez poussé pour utilisé tout sa.
Je vais allez lire la doc complète d' Actiona peut-être que j'y trouverais ma pièce d'or ^^

En attendant pts mort, merci pour toute les réponses apporté.
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Interragir avec un serveur web sans naviguateur

Post by Jmgr »

Impossible de lancé le téléchargement de l'installateur flash player dans la navigateur intégré.
L'installation est globale, donc tu n'as pas besoin de le faire pour chaque navigateur. Si tu l'as fait pour Firefox, Chrome ou IE il est déjà installé.
"My software never has bugs. It just develops random features."
etideval
Posts: 47
Joined: 19 Apr 2015, 18:24

Re: Interragir avec un serveur web sans naviguateur

Post by etideval »

a oui en effet j'avais pas mis

Code: Select all

webView.settings().setAttribute(QWebSettings.PluginsEnabled, true);
au bonne endroits sa marche bien merci me reste plus qu'a rajouté mon scriptjava et sa sera parfait ^^
Post Reply