[R] Utiliser AutoIt avec CasperJS ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
geofred1993
Niveau 1
Niveau 1
Messages : 11
Enregistré le : dim. 27 janv. 2013 02:56
Status : Hors ligne

[R] Utiliser AutoIt avec CasperJS ?

#1

Message par geofred1993 »

Bonjour,

Pour ceux qui ne connaitraient pas CasperJS, c'est un moyen de piloter le navigateur PhantomJS avec du javascript.
Son avantage est de faciliter l'écriture de script pour PhantomJS.

J'aimerais lancer un script CasperJS depuis AutoIt, mais sans avoir CasperJS ni PhantomJS d'installé (mis dans le PATH) sur ma machine.

En fait, il sont dans un dossier "bin" à la racine.

Ma structure :

- [bin] (qui contient tout CasperJS, j'ai ajouté phantomjs.exe dans le dossier batchbin)
- main.au3

Voici mon script main.au3 pour le moment :

Code : Tout sélectionner

; Chemin vers CasperJs.
Const $casperjs = @ScriptDir & "\bin\batchbin\casperjs.bat";

; Dossier où sont placés mes script javascript.
Const $script_dir = @ScriptDir & "\scripts\";

Func test()
    RunWait($casperjs & " " & $script_dir & "test.js");
EndFunc

test();
 
Le problème est que CapserJS ne reconnait pas PhantomJS qui est dans le même dossier que lui.
Enfait il cherche phantomjs de manière globale (dans le PATH).

Je dois surement modifier casperjs.bat.

Voici celui d'origine :

Code : Tout sélectionner

@ECHO OFF
set CASPER_PATH=%~dp0..
set CASPER_BIN=%CASPER_PATH%\bin\
set ARGV=%*
call phantomjs "%CASPER_BIN%bootstrap.js" --casper-path="%CASPER_PATH%" --cli %ARGV%
 
Est-ce que quelqu'un à déjà essayé d'utiliser CasperJS de manière portable et aurait la solution à mon problème ?

Merci d'avance.
Modifié en dernier par geofred1993 le ven. 29 nov. 2013 03:16, modifié 1 fois.
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#2

Message par GhostLine »

N'oublie pas que lorsque tu lances ton script "en mode test" à partir de l'IDE, ton répertoire courant n'est pas forcément celui que tu crois. Je te suggère de refaire tes tests en mettant le chemin complet "en dur" au lieu d'utiliser @ScriptDir . Perso, je créé une variable $ScriptDir pour la durée de mes tests et modification, avec $ScriptDir = "C:\MonDossierCourant\" . En fin de dev, je modifie $ScriptDir = @ScriptDir , et je suis tranquille :)
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#3

Message par sylvanie »

Bonjour
Sinon, on peut updater la PATH le temps de l'éxécution du script :

Code : Tout sélectionner

$PATH_ACTUEL=EnvGet("PATH")
EnvSet("PATH",$PATH_ACTUEL&";"&@ScriptDir)
EnvUpdate()
Run(@ComSpec&' /k PATH')
Exit 0
 
Le PATH se trouve modifié uniquement le temps de l'exécution du script et que pour le script.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
geofred1993
Niveau 1
Niveau 1
Messages : 11
Enregistré le : dim. 27 janv. 2013 02:56
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#4

Message par geofred1993 »

Brillant l'idée du PATH temporaire. Merci, j'essayerais demain.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#5

Message par jguinch »

@sylvanie : j'ai pas trop compris pourquoi tu utilises EnvUpdate(). C'est une erreur ou c'est voulu ?
@GhostLine : je n'ai pas compris ta remarque à propos de @ScriptDir. Peu importe le dossier dans lequel on se trouve quand on exécute un script, la valeur @ScriptDir correspondra toujours au chemin du script (compilé ou non). Tu confonds avec le répertoire de travail @WorkingDir, non ?

Vous allez dire, y comprend rien lui :roll:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#6

Message par sylvanie »

c'était voulu pour ma part, cf la remarque de Envupdate :

Similar effect as logging off and then on again. For example, changes to the %path% environment might not take effect until you call EnvUpdate (or you logoff/reboot).

ça force le refresh, ça peut marcher sans, mais avec, ça marche toujours.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#7

Message par jguinch »

OK, j'avais eu un moment de doute...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
geofred1993
Niveau 1
Niveau 1
Messages : 11
Enregistré le : dim. 27 janv. 2013 02:56
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#8

Message par geofred1993 »

Voilà merci, ça fonctionne à merveille. :D

Voici mon code pour ceux que ça interresseraient :

Code : Tout sélectionner

; Get the PATH.
$actual_path = EnvGet('PATH')

; Vars for phantomjs and casperjs folder path.
$phantomjs_path = @ScriptDir & '\bin\phantomjs'
$casperjs_path = @ScriptDir & '\bin\casperjs\batchbin'

; Update the PATH.
EnvSet('PATH', $actual_path & ';' & $phantomjs_path & ';' & $casperjs_path)
EnvUpdate()

; Run a test script.
ShellExecuteWait('casperjs', @ScriptDir & "\scripts\test.js")
; ShellExecuteWait('casperjs', @ScriptDir & "\scripts\test.js", "", "", @SW_HIDE)
 
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Utiliser AutoIt avec CasperJS ?

#9

Message par GhostLine »

jguinch a écrit :@sylvanie : j'ai pas trop compris pourquoi tu utilises EnvUpdate(). C'est une erreur ou c'est voulu ?
@GhostLine : je n'ai pas compris ta remarque à propos de @ScriptDir. Peu importe le dossier dans lequel on se trouve quand on exécute un script, la valeur @ScriptDir correspondra toujours au chemin du script (compilé ou non). Tu confonds avec le répertoire de travail @WorkingDir, non ?

Vous allez dire, y comprend rien lui :roll:
Au temps pour moi, je me suis mal expliqué :) Quand je dev. un outil, je mets en place l'arborescence définitive du programme tout de suite (dans Program Files donc). Par contre, le script non compilé est stocké dans un autre emplacement (dans Mes Documents\AutoIt). Du coup, je fais un peu le grand écart entre ces deux répertoires pour tester mes programmes, et j'ai parfois eu des surprises, d'où ma recommandation. voili voilou :)
Répondre