Page 1 sur 1
[R] Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : jeu. 17 août 2023 08:43
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
Re: Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : jeu. 17 août 2023 11:01
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?
Re: Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : jeu. 17 août 2023 11:15
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
Re: Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : jeu. 17 août 2023 17:38
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

Re: Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : jeu. 17 août 2023 18:12
par gsalin
done

waiting to be validated!
I'll paste the link when it's available...and the solution if there is one
Re: Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : jeu. 17 août 2023 18:18
par gsalin
Re: Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : ven. 18 août 2023 18:33
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
Re: [R] Firefox + webdriver, accès aux identifiants enregistrés possible?
Posté : mar. 03 oct. 2023 14:00
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 !