Validation fenêtre Enregistrement fichier

Vous voulez de l'aide ? Postez ici :)
Post Reply
Activaz31
Posts: 10
Joined: 13 Dec 2014, 11:16

Validation fenêtre Enregistrement fichier

Post by Activaz31 »

Bonjour,

Ouverte sous Chrome, une page web propose des liens vers plusieurs fichiers EXCEL que je souhaite enregistrer sur mon disque local, "en boucle".
Après click le lien, une fenêtre (Windows ?) me propose, avec le nom du fichier dans par défaut, les boutons "Enregistrer" et "Annuler".
Ceci peut se faire par la touche Enter (Enregistrer est par défaut) ou Alt-E.

Je souhaite bien sûr automatiser cette dernière tâche par Activaz (après ouverture successive des liens) ;
J'ai essayé ces deux possibilités de jeu de touche, en créant une action "touche" et en renseignant le champ "touche" par E la case Ctrl plus bas, ou Enter ou Entrée.
A l'exécution du script, la fenêtre d'enregistrement du fichier s'affiche mais Actionaz n'effectue pas la validation, ceci sans indication d'erreur dans la console.

Merci pour votre coup de main !
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Validation fenêtre Enregistrement fichier

Post by Sergent-Quentin »

D'après ce que j'ai compris je pense que la fenêtre n'est pas en "premier plan", Créer une action "Fenêtre", choisis la fenêtre qui t'intéresse avec le bouton en forme de +, Clique sur action et choisi "Mettre en premier plan".


Si tu veux une meilleure explication n'hésite pas
Activaz31
Posts: 10
Joined: 13 Dec 2014, 11:16

Erreur fenêtre (Enregistrement fichier)

Post by Activaz31 »

Merci Quentin,

J'ai ouvert dans Chrome l'écran "Enregistrer sous" en cliquant sur le lien ouvrant le fichier, manuellement.
Dans Actionaz j'insère une action fenêtre : je trouve dans le premier champ "titre de la fenêtre" une liste de fenêtres Chrome, avec "Enregistrer sous" que je valide
A l'exécution, la console me dit "impossible de trouver une fenêtre correspondant à Enregistrer sous" !
Faut-il mettre ce champ en anglais ? Effectivement si je vérifie cette valeur avec l'éditeur de code , il me dit "Erreur de syntaxe détectée : Expected ??".

J'ai aussi essayé de définir le tire de la fenêtre en déplaçant le pointeur de la souris et relâchant sur le titre de la fenêtre "Enregistrer sous" mais cela plante allégrement le programme !

Bon, un peu désorienté face aux difficultés d'implémentation de procédures "simples".
Sergent-Quentin wrote:D'après ce que j'ai compris je pense que la fenêtre n'est pas en "premier plan", Créer une action "Fenêtre", choisis la fenêtre qui t'intéresse avec le bouton en forme de +, Clique sur action et choisi "Mettre en premier plan".


Si tu veux une meilleure explication n'hésite pas
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Erreur fenêtre (Enregistrement fichier)

Post by Sergent-Quentin »

Activaz31 wrote:A l'exécution, la console me dit "impossible de trouver une fenêtre correspondant à Enregistrer sous" !
Je vais dire un truc bête mais la fenêtre pour enregistrer ton fichier était ouverte avant ? Si c'est le cas rajoute un temps de pause genre 2000 ms ( 2 secondes ), car il se peut ta fenêtre enregistrer commence à s'ouvrir mais l'action "Fenêtre" pour mettre en premier plan s’exécute pendant du coup il la trouve pas.
Activaz31 wrote:J'ai aussi essayé de définir le tire de la fenêtre en déplaçant le pointeur de la souris et relâchant sur le titre de la fenêtre "Enregistrer sous" mais cela plante allégrement le programme !
Oui moi aussi, pour palier à ce problème ( pour ma part ) je fais ça vite, dés que tu appuie sur la croix, actiona passe en arrière-plan et tu dois avoir directement ta fenêtre enregistrer devant.

Si jamais tu peux poster un screen pour montrer comment est ton script ( si tu veux ) je pourrais avoir un meilleur visuel ;)

Merci
Activaz31
Posts: 10
Joined: 13 Dec 2014, 11:16

Pb récup nom fenêtre (Enregistrement fichier)

Post by Activaz31 »

Bonjour et Merci,

Le programme en ligne "fenêtre" me dit qu'il ne trouve pas la fenêtre "Enregistrer sous" que j'avais spécifié à partir le la liste des fenêtres ouvertes proposées dans la boîte déroulantes (j'avais ouvert la fenêtre manuellement pour qu'il puisse la lister).
L'ouverture de la fenêtre "Enregister sous" ne s'opére pas après la commande "Ouvrir URL". On constate effectivement la présence d'une fenêtre vide appellée "Sans titre" après l'exécution avortée du script sur la ligne.


Concernant le référencement du nom de la fenêtre "Enregister sous" à la ligne fenêtre, par un déplacement très rapide de la souris vers la dite fenêtre, cette opération "plant" Actionaz (si le curseur est lâché sur la zone de titre ou du bas de la fenêtre, dans la zone de l'arborescence des fichiers, l'expression "arborescence" est captée dans la fenêtre "Fenêtre" d'Actionaz.

http://data.hgca.com/archive/future.asp
Label du ficier à télécharger : LIFFE Wheat Option: Excel
Adresse du fichier à télécharger et sauvegarder (validation automatique de l'enregistrement)
http://data.hgca.com/archive/futures/xl ... 0Wheat.xls


Voici le code de mon script, si besoin.
Merci encore

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
<settings program="actionaz" version="3.8.0" scriptVersion="1.1.0" os="Windows"/>
<actions>
<action name="ActionWindow" version="1.0.0"/>
<action name="ActionKey" version="1.0.0"/>
<action name="ActionOpenURL" version="1.0.0"/>
<action name="ActionPause" version="1.0.0"/>
</actions>
<parameters/>
<resources/>
<script pauseBefore="0" pauseAfter="0">
<action name="ActionOpenURL">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<parameter name="url">
<subParameter name="value" code="0">http://data.hgca.com/archive/future.asp</subParameter>
</parameter>
</action>
<action name="ActionOpenURL">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<parameter name="url">
<subParameter name="value" code="0">http://data.hgca.com/archive/futures/xl ... bParameter>
</parameter>
</action>
<action name="ActionPause" enabled="false">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="duration">
<subParameter name="value" code="0">2</subParameter>
</parameter>
<parameter name="unit">
<subParameter name="value" code="0">seconds</subParameter>
</parameter>
</action>
<action name="ActionWindow" pauseBefore="1600" pauseAfter="1100" timeout="1700">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<exception id="33" action="0" line=""/>
<parameter name="title">
<subParameter name="value" code="0">Enregistrer sous</subParameter>
</parameter>
<parameter name="resizeHeight">
<subParameter name="value" code="0">0</subParameter>
</parameter>
<parameter name="action">
<subParameter name="value" code="0">setForeground</subParameter>
</parameter>
<parameter name="movePosition">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="useBorders">
<subParameter name="value" code="0">true</subParameter>
</parameter>
<parameter name="resizeWidth">
<subParameter name="value" code="0">0</subParameter>
</parameter>
</action>
<action name="ActionKey">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<exception id="33" action="0" line=""/>
<parameter name="alt">
<subParameter name="value" code="1">"true"</subParameter>
</parameter>
<parameter name="action">
<subParameter name="value" code="0">press</subParameter>
</parameter>
<parameter name="amount">
<subParameter name="value" code="0">1</subParameter>
</parameter>
<parameter name="meta">
<subParameter name="value" code="0">false</subParameter>
</parameter>
<parameter name="key">
<subParameter name="key" code="0">E</subParameter>
<subParameter name="isQtKey" code="0">true</subParameter>
</parameter>
<parameter name="ctrl">
<subParameter name="value" code="0">false</subParameter>
</parameter>
<parameter name="shift">
<subParameter name="value" code="0">false</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">win32</subParameter>
</parameter>
<parameter name="pause">
<subParameter name="value" code="0">10</subParameter>
</parameter>
</action>
</script>
</scriptfile>

Sergent-Quentin wrote:
Activaz31 wrote:A l'exécution, la console me dit "impossible de trouver une fenêtre correspondant à Enregistrer sous" !
Je vais dire un truc bête mais la fenêtre pour enregistrer ton fichier était ouverte avant ? Si c'est le cas rajoute un temps de pause genre 2000 ms ( 2 secondes ), car il se peut ta fenêtre enregistrer commence à s'ouvrir mais l'action "Fenêtre" pour mettre en premier plan s’exécute pendant du coup il la trouve pas.
Activaz31 wrote:J'ai aussi essayé de définir le tire de la fenêtre en déplaçant le pointeur de la souris et relâchant sur le titre de la fenêtre "Enregistrer sous" mais cela plante allégrement le programme !
Oui moi aussi, pour palier à ce problème ( pour ma part ) je fais ça vite, dés que tu appuie sur la croix, actiona passe en arrière-plan et tu dois avoir directement ta fenêtre enregistrer devant.

Si jamais tu peux poster un screen pour montrer comment est ton script ( si tu veux ) je pourrais avoir un meilleur visuel ;)

Merci
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Validation fenêtre Enregistrement fichier

Post by Sergent-Quentin »

hum... je vois, je peux te proposer un script qui serait plus fiable et plus pratique ;)

Je vais t'ai fait le mini-script que tu devras importer, lorsque tu vas l’exécuter il va te demander de choisir un dossier dans lequel tu voudras télécharger ton fichier, une fois que tu as trouvé ton dossier clique une seule fois dessus ( double-clique c'est juste pour parcourir les dossiers)

Ensuite clique sur "Choisir" et il va te télécharger ton ficher dedans :)


Sinon tu voulais que ton script télécharge en boucle ? Tous ou certains liens ?

Je peux t'arranger un script qui téléchargera tes fichiers sans avoir besoin d'ouvrir ton navigateur web ( plus pratique et rapide ) :wink:

Merci

Mini-Script :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.8.0" scriptVersion="1.1.0" os="Windows"/>
    <actions>
        <action name="ActionWebDownload" version="1.0.0"/>
        <action name="ActionCode" version="1.0.0"/>
    </actions>
    <parameters/>
    <resources/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" label="Dossier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var Dossier = "";

    var fileDialog = new FileDialog({
       title: "Sélectionne le dossier comportant le logiciel", 
       fileMode: FileDialog.Directory,
       acceptMode: FileDialog.Open
    });

    if(fileDialog.showModal())
    {
       Dossier = fileDialog.selectedFile();
    }</subParameter>
            </parameter>
        </action>
        <action name="ActionWebDownload" label="Téléchargement du fichier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <exception id="33" action="0" line=""/>
            <parameter name="destination">
                <subParameter name="value" code="0">file</subParameter>
            </parameter>
            <parameter name="url">
                <subParameter name="value" code="0">http://data.hgca.com/archive/futures/xls/Data%20Archive%20-%20Futures%20LIFFE%20Wheat.xls</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0">$Dossier/Data Archive - Futures LIFFE Wheat.xls</subParameter>
            </parameter>
            <parameter name="showProgress">
                <subParameter name="value" code="0">true</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
Activaz31
Posts: 10
Joined: 13 Dec 2014, 11:16

Va bene Re: Validation fenêtre Enregistrement fichier

Post by Activaz31 »

Merci Quentin,

Ton programme marche bien. :D Tu as compris que je souhaitais télécharger plusieurs fichiers.
Dans Actionaz, je ne vois une action "télécharger" : il suffit donc que j'en crée autant que j'ai de fichiers à télécharger.
Une boucle téléchargeant tous les fichiers de la page (au moins les Excel) serait intéressante, si cela se programme facilement. :lol:

Merci pour le coup de main.
Sergent-Quentin wrote:hum... je vois, je peux te proposer un script qui serait plus fiable et plus pratique ;)

Je vais t'ai fait le mini-script que tu devras importer, lorsque tu vas l’exécuter il va te demander de choisir un dossier dans lequel tu voudras télécharger ton fichier, une fois que tu as trouvé ton dossier clique une seule fois dessus ( double-clique c'est juste pour parcourir les dossiers)

Ensuite clique sur "Choisir" et il va te télécharger ton ficher dedans :)


Sinon tu voulais que ton script télécharge en boucle ? Tous ou certains liens ?

Je peux t'arranger un script qui téléchargera tes fichiers sans avoir besoin d'ouvrir ton navigateur web ( plus pratique et rapide ) :wink:

Merci

Mini-Script :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.8.0" scriptVersion="1.1.0" os="Windows"/>
    <actions>
        <action name="ActionWebDownload" version="1.0.0"/>
        <action name="ActionCode" version="1.0.0"/>
    </actions>
    <parameters/>
    <resources/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" label="Dossier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var Dossier = "";

    var fileDialog = new FileDialog({
       title: "Sélectionne le dossier comportant le logiciel", 
       fileMode: FileDialog.Directory,
       acceptMode: FileDialog.Open
    });

    if(fileDialog.showModal())
    {
       Dossier = fileDialog.selectedFile();
    }</subParameter>
            </parameter>
        </action>
        <action name="ActionWebDownload" label="Téléchargement du fichier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <exception id="33" action="0" line=""/>
            <parameter name="destination">
                <subParameter name="value" code="0">file</subParameter>
            </parameter>
            <parameter name="url">
                <subParameter name="value" code="0">http://data.hgca.com/archive/futures/xls/Data%20Archive%20-%20Futures%20LIFFE%20Wheat.xls</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0">$Dossier/Data Archive - Futures LIFFE Wheat.xls</subParameter>
            </parameter>
            <parameter name="showProgress">
                <subParameter name="value" code="0">true</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Validation fenêtre Enregistrement fichier

Post by Sergent-Quentin »

Bonsoir,
Activaz31 wrote:Merci pour le coup de main.
De rien ^^
Activaz31 wrote:Une boucle téléchargeant tous les fichiers de la page (au moins les Excel) serait intéressante, si cela se programme facilement. :lol:
Je t'ai rédiger un script qui devrait te convenir pour ça, mais avant un petit pré-requis :

Ouvre Actionaz, Va dans Outils-->Options-->Onglet "Actions" et tu configure comme ceci :
Configuration.jpg
Configuration.jpg (28.83 KiB) Viewed 2530 times
Cela t'affichera une console tout à droite au milieu de l'écran qui te dira en temps réel les fichiers qui sont téléchargés :)

Pas besoin d'ouvrir le navigateur, juste à faire cette petite configuration ci-dessus et lancer le script, tu choisis le dossier dans lequel tu voudras que les fichiers se téléchargent, le reste il s'en occupe :wink:

Script :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.8.0" scriptVersion="1.1.0" os="Windows"/>
    <actions>
        <action name="ActionStop" version="1.0.0"/>
        <action name="ActionLoop" version="1.0.0"/>
        <action name="ActionWebDownload" version="1.0.0"/>
        <action name="ActionCode" version="1.0.0"/>
        <action name="ActionConsole" version="1.0.0"/>
    </actions>
    <parameters/>
    <resources/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" label="Dossier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var Chiffre = -1;
var Dossier = "";

        var fileDialog = new FileDialog({
           title: "Sélectionne le dossier dans lequel tu veux télécharger tes fichiers",
           fileMode: FileDialog.Directory,
           acceptMode: FileDialog.Open
        });

        if(fileDialog.showModal())
        {
           Dossier = fileDialog.selectedFile();
        }</subParameter>
            </parameter>
        </action>
        <action name="ActionWebDownload" label="Téléchargement des données">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <exception id="33" action="0" line=""/>
            <parameter name="destination">
                <subParameter name="value" code="0">variable</subParameter>
            </parameter>
            <parameter name="url">
                <subParameter name="value" code="0">http://data.hgca.com/archive/future.asp</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">str</subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="showProgress">
                <subParameter name="value" code="0">true</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" label="Titre">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var Chiffre = Chiffre + 1;
var re = /<td class="greycell">(.+?)</g;
var m, Titre = [];

while ((m = re.exec(str)) !== null) {
        Titre.push(m[1]);
}</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" label="Lien du fichier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var re = /<td class="bodycell"><a href="futures\/xls\/(.+?)"/g;
var m, Lien = [];

while ((m = re.exec(str)) !== null) {
        Lien.push(m[1]);
}</subParameter>
            </parameter>
        </action>
        <action name="ActionWebDownload" label="Téléchargement du fichier">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <exception id="33" action="0" line=""/>
            <parameter name="destination">
                <subParameter name="value" code="0">file</subParameter>
            </parameter>
            <parameter name="url">
                <subParameter name="value" code="0">http://data.hgca.com/archive/futures/xls/$Lien[$Chiffre]</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0">$Dossier/$Titre[$Chiffre].xls</subParameter>
            </parameter>
            <parameter name="showProgress">
                <subParameter name="value" code="0">true</subParameter>
            </parameter>
        </action>
        <action name="ActionConsole" label="Informations">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="output">
                <subParameter name="value" code="0">information</subParameter>
            </parameter>
            <parameter name="text">
                <subParameter name="value" code="0">$Titre[$Chiffre] : Ok</subParameter>
            </parameter>
        </action>
        <action name="ActionLoop" label="Boucle à : Titre">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="line">
                <subParameter name="value" code="0">Titre</subParameter>
            </parameter>
            <parameter name="count">
                <subParameter name="value" code="0">47</subParameter>
            </parameter>
        </action>
        <action name="ActionConsole" label="Fini !">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="output">
                <subParameter name="value" code="0">information</subParameter>
            </parameter>
            <parameter name="text">
                <subParameter name="value" code="0">Fini !</subParameter>
            </parameter>
        </action>
        <action name="ActionStop" label="Stop">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
        </action>
    </script>
</scriptfile>
Activaz31
Posts: 10
Joined: 13 Dec 2014, 11:16

Merci. Boucle et customizRe: Validation e Enregistrement fic

Post by Activaz31 »

Merci encore,

La boucle sauve les fichiers excel parfaitement :D mais... sur la première colonne seulement.
En fait, c'est des fichiers Excel de la deuxième colonne dont j'ai besoin (quotidien). La première colonne lie aux fichiers hebdo.

J'ai essayé de référencer le script à une autre page (même type, sur le même site: la page "physical" en changeant "futures" en phyisical dans les actions, mais cela ne marche pas car le nom de la page "futures" doit apparaître toujours dans ton code. :?:

http://data.hgca.com/archive/physical.asp (fichiers EXCEL en deuxième colonne)

Je suis pénible !....

Bonne soirée
Post Reply