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
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...