[R] Firefox + webdriver, accès aux identifiants enregistrés possible?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
gsalin
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 août 2023 12:20
Status : Hors ligne

[R] Firefox + webdriver, accès aux identifiants enregistrés possible?

#1

Message par gsalin »

Bonjour,
j'aimerais faire la chose suivante avec un script autoit + webdriver :
  • ouvrir firefox avec le profil utilisé par défaut par l'utilisateur courant
  • naviguer vers une URL qui nécessite une authentification (avec identifiants pré-enregistrés par le navigateur ou non)
    • si identifiants pré-enregistrés, alors on clique direct sur le bouton de soumission
    • si pas d'identifiants pré-enregistrés, alors on demande le mot de passe à l'utilisateur, puis on remplit le champ mot de passe et on clique sur le bouton de soumission
J'ai un souci avec "si identifiants pré-enregistrés, alors on clique direct sur le bouton de soumission", je m'en sors pas!!!

J'arrive bien à utiliser firefox avec mon profil, mais il ne veut pas afficher dans le formulaire les identifiants qui sont enregistrés, alors que si j'ouvre la page à la main, les identifiants sont bien présents et je peux valider directement mon formulaire

La config pour firefox est la suivante :

Code : Tout sélectionner

Local $sDesiredCapabilities = '{"capabilities":{"alwaysMatch":{"moz:firefoxOptions":{"binary":"C:\\Program Files\\Mozilla Firefox\\firefox.exe", "args": ["-profile", "' & GetDefaultFFProfile() & '"],"log": {"level": "trace"}}}}}'
j'ai aussi testé ça :

Code : Tout sélectionner

Local $sDesiredCapabilities = '{"capabilities":{"alwaysMatch":{"moz:firefoxOptions":{"binary":"C:\\Program Files\\Mozilla Firefox\\firefox.exe", "args": ["-profile", "' & GetDefaultFFProfile() & '"],"log": {"level": "trace"},"prefs": {"profile.password_manager_enabled": "True"}}}}}'
Vous auriez une idée? besoin de plus d'infos?

merci d'avance pour votre aide
Gérald
Modifié en dernier par gsalin le ven. 18 août 2023 18:34, modifié 1 fois.
gsalin
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 août 2023 12:20
Status : Hors ligne

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?

#2

Message par gsalin »

Pour être sûr de mon coup, j'ai créé un profil "autoit" sur firefox qui est mon profil par défaut, que j'ai configuré pour qu'il demande à sauvegarder les identifiants et qu'il auto remplisse les identifiants et mots de passe (about:preferences#privacy > Proposer d’enregistrer les identifiants et les mots de passe pour les sites web et Renseigner automatiquement les identifiants et les mots de passe cochés). Je suis allé manuellement sur ma page d'authentification et ai bien sauvegardé mes identifiants (testé e fermant et réouvrant mon navigateur et ma page)

toujours pareil avec mon script autoit : la page s'ouvre, mais l'identifiant et le mot de passe ne sont pas renseignés.

La méthode GetDefaultFFProfile me renvoie bien mon profil autoit, mais quand je vais voir la config about:preferences#privacy, Proposer d’enregistrer les identifiants et les mots de passe pour les sites web et Renseigner automatiquement les identifiants et les mots de passe sont décochés!!!!!

une idée?
gsalin
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 août 2023 12:20
Status : Hors ligne

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?

#3

Message par gsalin »

Mon script épuré si vous voulez/pouvez tester, avec comme url la page d'authentification de ce forum :

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.16.1
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
#include <wd_core.au3>
#include <wd_helper.au3>
#include <ButtonConstants.au3>
#include <ColorConstants.au3>
#include <Date.au3>
#include <Debug.au3>
#include <GuiComboBoxEx.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; non standard UDF's
#include "wd_helper.au3"
#include "wd_capabilities.au3"
Global $g_sDriver = 'geckodriver.exe'
Global $g_sUrl = 'https://www.autoitscript.fr/forum/ucp.php?mode=login&redirect=index.php'

Main()

Func Main()
   ConsoleWrite("Entering script "& @CRLF)
   ; Local $sDesiredCapabilities = '{"desiredCapabilities":{"javascriptEnabled":true,"nativeEvents":true,"acceptInsecureCerts":true}}'
	Local $sDesiredCapabilities = '{"capabilities":{"alwaysMatch":{"moz:firefoxOptions":{"binary":"C:\\Program Files\\Mozilla Firefox\\firefox.exe", "args": ["-profile", "' & GetDefaultFFProfile() & '"],"log": {"level": "trace"},"prefs": {"profile.password_manager_enabled": 1,"dom.forms.autocomplete.formautofill":1}}}}}'
 
   _WD_Option('Driver', $g_sDriver)
;~    _WD_Option('DriverParams', '--log trace')
;~    _WD_Option('DriverParams', '--log trace --connect-existing  --marionette-port 2828')
;~    _WD_Option('DriverParams', '--connect-existing')
   _WD_Option('Port', 4444)

   _WD_Startup()
   If @error <> $_WD_ERROR_Success Then Exit -1

   Local $sSession = _WD_CreateSession($sDesiredCapabilities)
   If @error <> $_WD_ERROR_Success Then Exit

   _WD_Navigate($sSession, $g_sUrl)
	sleep(3000)
Exit

EndFunc   ;==>Main

Func GetDefaultFFProfile()
	Local $sDefault, $sProfilePath = ''

	Local $sProfilesPath = StringReplace(@AppDataDir, '\', '/') & "/Mozilla/Firefox/"
	ConsoleWrite("sProfilesPath =  "&$sProfilesPath& ", "&@UserProfileDir & @CRLF)
	Local $sFilename = $sProfilesPath & "profiles.ini"
	Local $aSections = IniReadSectionNames ($sFilename)

	If Not @error Then
		For $i = 1 To $aSections[0]
			$sDefault = IniRead($sFilename, $aSections[$i], 'Default', '0')

			If $sDefault = '1' Then
				$sProfilePath = $sProfilesPath & IniRead($sFilename, $aSections[$i], "Path", "")
				ExitLoop
			EndIf
		Next
	EndIf
	ConsoleWrite("sProfilePath =  "&$sProfilePath & @CRLF)
	Return $sProfilePath
EndFunc
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?

#4

Message par mikell »

Je recommande vivement de poser la question sur le forum US (en anglais) pour avoir la réponse directement de Danp2 , l'auteur de l'UDF Webdriver.au3
Bien mettre "Webdriver" en tête du titre du sujet :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
gsalin
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 août 2023 12:20
Status : Hors ligne

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?

#5

Message par gsalin »

done ;)
waiting to be validated!
I'll paste the link when it's available...and the solution if there is one
gsalin
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 août 2023 12:20
Status : Hors ligne

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?

#6

Message par gsalin »

gsalin
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 août 2023 12:20
Status : Hors ligne

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?

#7

Message par gsalin »

la solution m'est venu de Danp2 en effet, la bonne config est :

Code : Tout sélectionner

Local $sDesiredCapabilities = '{"capabilities":{"alwaysMatch":{"moz:firefoxOptions":{"binary":"C:\\Program Files\\Mozilla Firefox\\firefox.exe", "args": ["-profile", "' & GetDefaultFFProfile() & '"],"log": {"level": "trace"},"prefs": {"signon.rememberSignons":true,"signon.autofillForms": true}}}}}'
notez les clés des prefs à positionner et la valeur à mettre (true et non "True")

geckodriver met par défaut des valeurs à certaines configs firefox qu'il faut donc modifier
LeaCarpentier67
Niveau 1
Niveau 1
Messages : 1
Enregistré le : lun. 25 sept. 2023 14:23
Status : Hors ligne

Re: [R] Firefox + webdriver, accès aux identifiants enregistrés possible?

#8

Message par LeaCarpentier67 »

Salut gsalin !

T'as essayé d'utiliser le ExpectedConditions de WebDriver pour vérifier la présence du bouton de soumission quand les identifiants sont déjà remplis ? Genre, si le bouton est actif et prêt à être cliqué, ça signifie probablement que les identifiants sont déjà là. Sinon, tu fais ta demande de mot de passe comme t'as dit. Juste une idée, mec !
Répondre