Page 1 sur 1

Firefox sans librairie externe

Posté : lun. 11 avr. 2016 13:42
par Askior
Bonjour,

Je viens vers vous aujourd'hui car je n'arrive pas à faire fonctionner mon script comme il se doit. Pour la forme, je dois automatiser des tests de lancement de navigateur qui vont me rediriger vers un portail. Mon soucis étant que je ne dois pas utiliser de librairie externe (c'est une contrainte interne)

Ma fonction est la suivante

Code : Tout sélectionner

Func _Navigateur()
   $sLog = "Ouverture du navigateur"
   writeLogs($sLog,1)
   Run("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
   Sleep(2000)
   Send ("http://www.orange.com/{ENTER}")
   Send("{TAB}")
   Send("{Space}")
   Send("{ENTER}")
   $sLog = "Fermeture du navigateur"
   writeLogs($sLog,1)
EndFunc
A noter que le navigateur s'ouvre correctement sur l'onglet de base, le problème viens donc de mon send url
Et lorsque j'utilise ShellExecute, il ouvre mon navigateur sous IE, sans prendre en compte la fenetre deja ouverte.

D'avance merci

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 13:56
par Oversid3
Ce que tu appel "librairie externe" n'est que du code Autoit.

Tu peux très bien prendre les morceaux de code de la "librairie" Firefox et les utiliser comme des fonctions de ton propre programme.
Tu peux même aller encore plus loin et copier l'intégralité de la librairie Firefox dans ton code et utiliser les fonctions (donc pas de #include).

L'utilisation des include et des appels de fonction n'est qu'un moyen pratique de s'y retrouver dans de trés grand programmes et non quelque chose de completement "externe" a AutoIT.

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 13:59
par Askior
Le problème c'est la dépendance des fonctions les unes envers les autres
C'est vraiment l'open url qui m’intéresse ici, et la navigation à travers la fenêtre .

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 14:03
par Oversid3
Le problème c'est la dépendance des fonctions les unes envers les autres
Je ne comprend du tout le sens de ta phrase :)

Mais sinon :

Code : Tout sélectionner

   Send ("http://www.orange.com/")
   Send ("{ENTER}")
   Send("{TAB}")
   Send("{Space}")
   Send("{ENTER}")

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 14:10
par Askior
Je n'ai pas regardé la librairie proposée (je suis entrain de le faire) mais je suppose que chaque fonction en appel une autre non?
Et pour la fin de ton message, c'est ce que j'ai mis dans mon code, et ça ne fonctionne pas ^^

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 14:16
par Oversid3
Je te conseil vivement d'utiliser les librairies autoit (qui je le rappel ne sont que du code AUtoit disposé dans un autre fichier pour plus de simplicité et de lisibilité du code principal. Quand tu compile ton .exe, autoit va rajouter l'ensemble des include dedans et tu pourra t'en "débarrasser").

Mais si vraiment tu veux manipuler une fenetre firefox, tu vas devoir ruser.

2 options pour atteindre la barre d'URL une fois la fenêtre ouverte.

1- Compter le nombre de TAB nécessaire avant d'atteindre la barre
2- Obliger la fenêtre à être positionner a tel endroit et tel dimension et utiliser des MouseClick.

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 14:26
par Askior
Merci de tes réponses

Je sais très bien qu'une librairie est du code avec des fonctions stockées. Malheureusement ma contraire est que je ne dois faire qu'un seul fichier (oui, c'est lourd :/ )

J'essaye d'éviter l'histoire du mouseclic, car les ecrans peuvent etre différents en fonction de la personne qui utilise le script (oui, c'est un script de test diffusé dans ma boite pour un événement)

Et l'histoire du tab risque d'être la solution emprunter du coup

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 14:38
par Oversid3
Et bien si tu ne dois utiliser qu'un seul fichier tu copie l'ensemble de FF.au3 dans ton script et voila :)

Mais encore une fois, une fois compiler, les include ne sont plus necessaire a l'execution du script. Tu aura TonScript.exe et c'est tout, le reste ne servant qu'au devellopement et ta contrainte sonne un peu comme "Dev moi un truc mais surtout n'utilise pas la touche ALT du clavier".

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 15:19
par Askior
C'est pas moi qui fais mes contraintes :lol:

Jai un probleme dans la librairie du coup, à la ligne 2375 le $sRet est pas déclaré (jai juste fais un c/c de FF_au3)

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 15:20
par orax
Pour automatiser Firefox avec l'UDF FF.au3 il faut préalablement installer l'extension MozRepl sur Firefox. Est-ce qu'au moins ça sera possible ?
Es-tu obligé d'utiliser Firefox ? Puisque pour automatiser Internet Explorer il n'y a pas besoin d'installer quoi que ce soit.

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 15:36
par Askior
Non l'installation sera impossible.

Je dois passer un portail d'accès internet où je dois valider des CGU. Et ma boite dispose d'un proxy qui bloque sous IE.

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 20:07
par walkson
Bonjour,
Et avec ceci ?

Code : Tout sélectionner

ShellExecute("C:\Program Files\Mozilla Firefox\firefox.exe","http://www.orange.com/","","open")
Run("C:\Program Files\Mozilla Firefox\firefox.exe  -new-window  http://superuser.com ")
Run("C:\Program Files\Mozilla Firefox\firefox.exe  -search Autoit ")
Run("C:\Program Files\Mozilla Firefox\firefox.exe  -new-tab  https://www.google.fr/")
Sleep(3000)
;par jguinch http://www.autoitscript.fr/forum/viewtopic.php?t=13062#p91189
$hFirefox = WinGetHandle("[REGEXPTITLE:(?i)Mozilla Firefox$]")
$sActiveTab = WinGetTitle($hFirefox) ; Titre de l'onglet actif

WinActivate($hFirefox)
ControlSend($hFirefox, "", "", "^{TAB}") ; Active l'onglet suivant
$sActiveTab = WinGetTitle($hFirefox) ; Titre de l'onglet actif

ControlSend($hFirefox, "", "", "^1") ; Passe à l'onglet suivant
$sActiveTab = WinGetTitle($hFirefox) ; Titre du premier onglet
Sleep(3000)
ControlSend($hFirefox, "", "", "!{F4}");on ferme
Pour les command line (pas terrible)

Code : Tout sélectionner

Usage: Firefox.exe [ options ... ] [URL]
       where options include:

  -h or --help       Print this message.
  -v or --version    Print Firefox version.
  -P <profile>       Start with <profile>.
  --profile <path>   Start with profile at <path>.
  --migration        Start with migration wizard.
  --ProfileManager   Start with ProfileManager.
  --no-remote        Do not accept or send remote commands; implies --new-instance.
  --new-instance     Open new instance, not a new window in running instance.
  --UILocale <locale> Start with <locale> resources as UI Locale.
  --safe-mode        Disables extensions and themes for this session.
  --console          Start Firefox with a debugging console.
  --jsconsole        Open the Browser Console.
  --jsdebugger       Open the Browser Toolbox.
  --devtools         Open DevTools on initial load.
  --start-debugger-server [port|path] Start the debugger server on a TCP port or Unix domain socket path.  Defaults to TCP port 6000.
  --browser          Open a browser window.
  --new-window <url> Open <url> in a new window.
  --new-tab <url>    Open <url> in a new tab.
  --private-window <url> Open <url> in a new private window.
  --preferences      Open Options dialog.
  --search <term>    Search <term> with your default search engine.
  --recording <file> Record drawing for a given URL.
  --recording-output <file> Specify destination file for a drawing recording.
  --setDefaultBrowser Set this app as the default browser.
Et pour les raccourcis: https://support.mozilla.org/fr/kb/racco ... =inproduct
Bon, ça reste du bricolage mais si ça peut aider ?...

Re: Firefox sans librairie externe

Posté : lun. 11 avr. 2016 21:18
par orax
Il y a aussi l'UI Automation.
Voir https://www.autoitscript.com/forum/topi ... ome-ff-ie/ pour l'UDF.
Je propose quand même cette alternative même si ça serait plus complexe que des ControlSend().

Re: Firefox sans librairie externe

Posté : ven. 15 avr. 2016 13:20
par Askior
Merci walkson, j'arrive desormais à atteindre la page voulue.
J'ai cependant du mal à passer en activité sur l'onglet actif (en envoyant 5 tab pour atteindre ma checkbox, rien ne se passe
Pourtant j'arrive bien à l'atteindre en appuyant 5 fois sur tab, puis espace pour valider ;)

Des idées? Je vais chercher si il existe une selection dans l'onglet actif

Re: Firefox sans librairie externe

Posté : mar. 19 avr. 2016 09:21
par Askior
Hello, je remonte le topic en urgence

Si vous avez des idées, je suis extrêmement preneur

Re: Firefox sans librairie externe

Posté : mar. 19 avr. 2016 21:56
par walkson
Bonsoir,

Code : Tout sélectionner

Run("C:\Program Files\Mozilla Firefox\firefox.exe  http://www.autoitscript.fr/forum/ ")
Sleep(10000)
$bb = 0
While 1
	Sleep(5000)
$hFirefox = WinGetHandle("[REGEXPTITLE:(?i)Mozilla Firefox$]")
If Not @error Then
$bb =	WinActivate($hFirefox,"")
	If $bb <> 0 Then
		ExitLoop
	EndIf
EndIf

WEnd

Sleep(500)
ControlSend($hFirefox, "", "", "{LSHIFT}{F6}")
Sleep(500)
ControlSend($hFirefox, "", "", "{LSHIFT}{F6}")
$a = 0
$mot = "coco@autoit.fr"
ConsoleWrite($mot & @CR)
For $i = 1 To 3
	Sleep(500)
ControlSend($hFirefox, "", "", "{TAB}")
Sleep(500)
Do
If $i = 1 Then $a = ControlSend($hFirefox, "", "", $mot)
If $i = 2 Then  $a = ControlSend($hFirefox, "", "", "motdepasse")
If $i = 3 Then  $a = ControlSend($hFirefox, "", "", "{SPACE}")
Until $a = 1
$a = 0
Next
ControlSend($hFirefox, "", "", "{TAB}")
;ControlSend($hFirefox, "", "", "{ENTER}")
Cela reste un joyeux bricolage .
Le problème majeur est d'attendre que la page soit chargée. Si on va trop vite, on envoie les Send() un peu partout. La méthode n'est vraiment pas fiable...