Firefox sans librairie externe

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Firefox sans librairie externe

#1

Message 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
Oversid3
Niveau 3
Niveau 3
Messages : 45
Enregistré le : jeu. 29 janv. 2015 11:20
Status : Hors ligne

Re: Firefox sans librairie externe

#2

Message 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.
Modifié en dernier par Oversid3 le lun. 11 avr. 2016 14:00, modifié 1 fois.
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#3

Message 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 .
Oversid3
Niveau 3
Niveau 3
Messages : 45
Enregistré le : jeu. 29 janv. 2015 11:20
Status : Hors ligne

Re: Firefox sans librairie externe

#4

Message 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}")
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#5

Message 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 ^^
Oversid3
Niveau 3
Niveau 3
Messages : 45
Enregistré le : jeu. 29 janv. 2015 11:20
Status : Hors ligne

Re: Firefox sans librairie externe

#6

Message 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.
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#7

Message 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
Oversid3
Niveau 3
Niveau 3
Messages : 45
Enregistré le : jeu. 29 janv. 2015 11:20
Status : Hors ligne

Re: Firefox sans librairie externe

#8

Message 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".
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#9

Message 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)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Firefox sans librairie externe

#10

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#11

Message 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.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Firefox sans librairie externe

#12

Message 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 ?...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Firefox sans librairie externe

#13

Message 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().
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#14

Message 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
Askior
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 11 avr. 2016 13:35
Status : Hors ligne

Re: Firefox sans librairie externe

#15

Message par Askior »

Hello, je remonte le topic en urgence

Si vous avez des idées, je suis extrêmement preneur
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Firefox sans librairie externe

#16

Message 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...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre