Bonjour à tous!

Je reviens vers vous après quelques petits scripts en Powershell afin de trouver une solution à un de mes problèmes.

Certaines licences Microsoft (Windows/Office) ne sont activables que par "téléphone", cependant, Microsoft met à disposition un lien qui permet de le faire via une page Web.
Cette page web est un formulaire à remplir avec sont ID d'activation (Windows ou Office).
Certains champs sont désactivés (ajout automatique de "ui-state-disabled" dans la Classname par exemple) lorsque la page est chargée et ne s'activent que via un Javascript.
J'arrive à en forcer certains (déblocage des input/boutons) mais mon formulaire (bien rempli) ne s’envoie toujours pas correctement et je ne sais pas trop pourquoi.
Par contre si je désactive le clique automatique du bouton de soumission du formulaire et que j’appuie sur la flèche de droite pour valider chaque input, là le formulaire s’envoie correctement!
Je pense que le souci viens des "onkeypress" contenus dans les inputs mais je n'arrive pas à les gérer.

J'ai également essayé de remplir les champs en utilisant SenKey ou autres "simulateurs de frappes" mais je ne suis pas arrivé à le faire fonctionner du coup je force directement la valeur des inputs.

En espérant avoir été suffisamment explicite.
Merci pour votre temps!



Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
 
# On ouvre un Internet Explorer sur l'URL désirée
$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true
$ie.Navigate("https://microsoft.gointeract.io/interact/index?interaction=1461173234028-3884f8602eccbe259104553afa8415434b4581-05d1&accountId=microsoft&appkey=196de13c-e946-4531-98f6-2719ec8405ce&Language=French&CountryCode=fr&CountryLanguage=FR&Click%20To%20Call%20Caller%20Id=+33769090385&startedFromSmsToken=Y8P0feI&token=tQjWI6")
 
while ($ie.Busy -eq $true){Start-Sleep -seconds 5;}   
 
# Je clique sur le bouton pour sélectionner une activation à 7 chiffres
$Open = $ie.Document.getElementByID('1461173234025-3129f8602eccbe259104553afa8415434b4581-02de_1461173234023-2568f8602eccbe259104553afa8415434b458-10ad')
$Open.click()
 
# Je récupère et met en forme l'ID d'activation via la commande "slmgr.vbs /dti"
$ActivationID = cscript c:\windows\System32\slmgr.vbs /dti
$ActivationID = $ActivationID.Split(':')[4].Trim()
$ActivationID1 = $ActivationID.Substring(0,7) 
$ActivationID2 = $ActivationID.Substring(7,7) 
$ActivationID3 = $ActivationID.Substring(14,7) 
$ActivationID4 = $ActivationID.Substring(21,7) 
$ActivationID5 = $ActivationID.Substring(28,7) 
$ActivationID6 = $ActivationID.Substring(35,7) 
$ActivationID7 = $ActivationID.Substring(42,7) 
$ActivationID8 = $ActivationID.Substring(49,7) 
$ActivationID9 = $ActivationID.Substring(56,7) 
 
# Pour vérifier que l'ID d'activation est bien formaté, je le print dans la console
Write-Output "$ActivationID1-$ActivationID2-$ActivationID3-$ActivationID4-$ActivationID5-$ActivationID6-$ActivationID7-$ActivationID8-$ActivationID9"
 
# On attend quelques secodnes que la page se charge
# PS: Si vous avez une meilleure méthode je suis preneur
Start-Sleep -seconds 5;
 
# Pour chaque champs de type input à remplir, je supprime la désactivation par défaut
# Puis j'insère l'ID
$ie.Document.getElementByID('field1').disabled = ''
$ie.Document.getElementByID('field1').value = $ActivationID1
$ie.Document.getElementByID('field2').disabled = ''
$ie.Document.getElementByID('field2').value = $ActivationID2
$ie.Document.getElementByID('field3').disabled = ''
$ie.Document.getElementByID('field3').value = $ActivationID3
$ie.Document.getElementByID('field4').disabled = ''
$ie.Document.getElementByID('field4').value = $ActivationID4
$ie.Document.getElementByID('field5').disabled = ''
$ie.Document.getElementByID('field5').value = $ActivationID5
$ie.Document.getElementByID('field6').disabled = ''
$ie.Document.getElementByID('field6').value = $ActivationID6
$ie.Document.getElementByID('field7').disabled = ''
$ie.Document.getElementByID('field7').value = $ActivationID7
$ie.Document.getElementByID('field8').disabled = ''
$ie.Document.getElementByID('field8').value = $ActivationID8
$ie.Document.getElementByID('field9').disabled = ''
$ie.Document.getElementByID('field9').value = $ActivationID9
 
# Petite pause probablement inutile
Start-Sleep -Milliseconds 750
 
# Pour chaque DIV qui contient "ui-state-disabled" dans sa ClassName, je supprime l'état de désactivation
foreach ($divs in ($ie.Document.getElementsByTagName("div") | Where-Object { $_.className -match "ui-state-disabled" })) {
    $divs.className = "ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-focus"
}
# J'active le bouton de soumission du formulaire et je clique dessus pour l'envoyer
$Submitactivation = $ie.Document.getElementByID('custom-msft-submit')
$Submitactivation.className = 'jma-click-to-continue-button ui-btn ui-btn-icon-right ui-icon-carat-r'
$Submitactivation.click()