Page 1 sur 1
" IEGetObjById " ; Id variant comment faire?
Posté : jeu. 21 sept. 2017 00:39
par Baldwinos
Bonsoir à tous,
Je suis novice sur AutoId, je me familiarise gentiment avec celui-ci.
Je suis en train de développer un programme pour automatiser des fonctions sur le net, mais je bloque sur quelque chose.
Jusqu'à maintenant j'utilisais la fonction " _IEGetObjById " mais voilà je bloque avec un bouton qui a un script java, et du coup le Id est variant à chaque connexion.
Comment contournez ce problème?
Merci à vous,
Baldwinos.
Re: " IEGetObjById " ; Id variant comment faire?
Posté : jeu. 21 sept. 2017 11:49
par walkson
Bonjour,
Difficile de vous répondre sans avoir le code de la page !
Il existe plusieurs méthodes: par collection, par Id, par Name ou encore par la valeur du button
Un exemple qui utilise plusieurs méthodes
#include <IE.au3>#include <MsgBoxConstants.au3>Local $oIE = _IECreate("https://candidat.pole-emploi.fr/candidat/espacepersonnel/authentification")Local $oInputs = _IETagNameGetCollection($oIE, "input")Local $sTxt = ""Local $aa ,$bb, $cc, $ddFor $oInput In $oInputs $sTxt &= $oInput.type & @CRLF $aa &= $oInput.value & @CRLF If $oInput.value = "Poursuivre" Then $bb = $oInput.id If $oInput.value = "Poursuivre" Then $dd = $oInput.nameNextMsgBox($MB_SYSTEMMODAL, "Input Type", " Types :" & @CRLF & $sTxt)MsgBox(0,"toutes valeurs",$aa)MsgBox(0,"id",$bb)$cc = _IEGetObjById($oIE,$bb)MsgBox(0,"id.value", $cc.value)$cc = _IEGetObjByName($oIE,$dd)MsgBox(0,"name.value 1",@extended &">>"& $cc.value)$cc = _IEGetObjByName($oIE,"boutonContinuer");méthode directe (et simple)MsgBox(0,"name.value 2",@extended &">>"& $cc.value)_IEQuit($oIE)
Selon le site
_IETagNameGetCollection($oIE, "input")
pourait être
_IETagNameGetCollection($oIE, "button")
Il faut regarder le code de la page et tester
En espérant vous avoir été utile
Re: " IEGetObjById " ; Id variant comment faire?
Posté : jeu. 21 sept. 2017 22:52
par Baldwinos
Tout d'abord merci de votre réponse.
Je ne savais pas si, légalement, je pouvais copier un extrait du code de la page.
Voici l'extrait du bouton en question. Excusez moi d'avance si je n'ai pas le droit de le faire, je le supprimerais de suite.
Code : Tout sélectionner
<button type="submit" value="Valider" id="button59c422d7df91f" class="green ">
<div class="button-container addHoverClick">
<div class="button-background">
<div class="buttonStart">
<div class="buttonEnd">
<div class="buttonMiddle"></div>
</div>
</div>
</div>
<div class="button-content">Valider</div>
</div>
</button>
<script type="text/javascript" id="button59c422d7df91f_script">
window.addEvent('domready', function() {
if($('button59c422d7df91f')) {
$('button59c422d7df91f').addEvent('click', function () {
window.fireEvent('buttonClicked', [this, {"type":"submit","value":"Valider","name":"","id":"button59c422d7df91f","class":"green ","title":"","confirm":"","onclick":""}]);
});
}
});
</script>
En attendant un retour de votre part, je vais plancher sur les conseils que vous m'avez donné.
Re: " IEGetObjById " ; Id variant comment faire?
Posté : ven. 29 sept. 2017 17:35
par Baldwinos
A défaut de passer pour un véritable débutant en la matière.. Je sèche un peu la !
Ne serait est ce pas plus simple de rentrer une ligne de code pour retrouver la collection en l’occurrence < Button > et sa valeur < Valider > ?
Code : Tout sélectionner
Local $oIE = _IEcreate("www.example.net")
Local $oInputs = _IETagNameGetCollection($oIE, "button")
Local $sTxt = ""
For $oInput In $oInputs
$sTxt &= $oInput.type & @CRLF
Next
MsgBox($MB_SYSTEMMODAL, "Form Input Type", "Form: " & $oInput.form.name & @CRLF & @CRLF & " Types :" & @CRLF & $sTxt)
Comment définir la valeur du button?
Et deuxièmement, je ne comprend pas la ligne de code MsgBox. Que dois-je mettre dans " Form Input Type " et " Form: " ?
Re: " IEGetObjById " ; Id variant comment faire?
Posté : sam. 30 sept. 2017 03:24
par Baldwinos
J'ai enfin trouvé la solution
Code : Tout sélectionner
$oCorrectObj = ""
$tags = $oIE.document.GetElementsByTagName("button")
For $tag in $tags
$class_value = $tag.GetAttribute("class")
If string($class_value) = "blue" Then
$oCorrectObj = $tag
Le seul hic, il y a plusieurs bouton avec ces références.
Comment sélection celui d'une <div class> précise?