[R] 3 questions pour automatiser mes visites sur Internet

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Damien35
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 23 janv. 2008 15:23
Status : Hors ligne

[R] 3 questions pour automatiser mes visites sur Internet

#1

Message par Damien35 »

Bonjour,

alors en fait je voudrais automatiser certaines de mes tâches quotidiennes sur internet :D

J'ai déjà bien regardé la doc d'autoit et réussi qq chtits programmes dont je suis super fier (donc j'arrive un peu à comprendre la prog même si c'est pas ma formation)

Ce que je voudrais, c'est récupéré du texte d'une page internet et le copier-coller dans word.

Pour ça j'ai qq problèmes :

1- après une première identification que je fais comme ça:

Code : Tout sélectionner

$o_form = _IEFormGetObjByName ($oIE, 0)
$o_login = _IEFormElementGetObjByName ($o_form, "login" )
$o_password = _IEFormElementGetObjByName ($o_form, "password" )
$o_signin = _IEFormElementGetObjByName ($o_form, "Submit")
$username = "toto"
$password = "tata"
_IEFormElementSetValue ($o_login, $username)
_IEFormElementSetValue ($o_password, $password)
$oSelect = _IEFormElementGetObjByName ($o_form, 0)
_IEFormElementOptionSelect ($oSelect, "une liste", 1, "byText") 
_IEAction ($o_signin, "click")
je n'arrive pas sur la page internet qui suit à refaire

Code : Tout sélectionner

$ocequiminteresse = _IEFormElementGetObjByName ($o_form, "cequiminteresse")
_IEFormElementSetValue ($ocequiminteresse, "1")
pour pouvoir y insérer du texte...

2- comment est-ce que l'on peut cliquer sur une icone "+" sans passer par du MouseClick ?
format html de l'endroit où je voudrais cliquer:

Code : Tout sélectionner

<input type="submit" value="+" onclick="document.getElementById('toto').value
3- comment sélectionner une zone de texte qui est dans un tableau (donc dans mon action manuelle je fais CTRL+sélection avec la souris) puis le copier coller dans word?

Code : Tout sélectionner

_IEAction ($_selection, "copy")

#include <Word.au3>
$oWordApp = _WordCreate (@ScriptDir & "\Test.doc")
$oDoc = _WordDocGetCollection ($oWordApp, 0)        
$oDoc.Range.insertAfter ("This is some text to insert.") ; ici récupérer le texte copier d'internet
Merci beaucoup pour votre aide :D

s'il manque des informations n'hésitez pas à me demander :wink:
Damien35
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 23 janv. 2008 15:23
Status : Hors ligne

Re: [..] 3 questions pour automatiser mes visites sur Internet

#2

Message par Damien35 »

1) j'ai réussi en faisant

Code : Tout sélectionner

$oIE2 = _IECreate("")
$o_form2 = _IEFormGetObjByName ($oIE2, "cequiminteresse")
la variable form avait changé avec la nouvelle page, par contre je suis pas sûr que ce soit très "propre" d'ouvrir une nouvelle page...


2) tout simple : par un

Code : Tout sélectionner

_IEFormElementGetCollection($o_form2, 5)
_IEAction ($ovariable, "click")
je n'arrivais pas car je n'avais pas compris qu'il fallait "compter" pour savoir à quel "moment" cliquer => pour moi 5e collection
=> problème réglé

3) là aussi j'ai fais des progrès :

Code : Tout sélectionner

$oTable = _IETableGetCollection ($oIE2, 6)
$aTableData = _IETableWriteToArray ($oTable, True)
_ArrayDisplay($aTableData)
ça m'affiche exactement ce que je voudrais!!!

Mais je n'arrive pas à séparer le contenu de la fenêtre "array" pour renvoyer sous word

Code : Tout sélectionner

#include <Array.au3>
#include <Word.au3> 
#include <IE.au3>
$oIE2 = _IECreate("")
$oTable = _IETableGetCollection ($oIE2, 6)
$aTableData = _IETableWriteToArray ($oTable, True)
_ArrayDisplay($aTableData)

$oWordApp = _WordCreate (@ScriptDir & "\Test.doc")              
$oDoc = _WordDocGetCollection ($oWordApp, 0)
$iRetCode = _ArrayToClip( $aTableData, 1 )
$oDoc.Range.insertAfter (ClipGet())

j'ai toujours une erreur car ce n'est pas la bonne dimension du tableau... (qui est [10][10] par exemple)

là je bloque toujours... une petite aide?
SurPriseS
Niveau 6
Niveau 6
Messages : 291
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] 3 questions pour automatiser mes visites sur Internet

#3

Message par SurPriseS »

tu peut utiliser _ienavigate pour ne pas avoir a réouvrir une nouvelle fenêtre ;)
Damien35
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 23 janv. 2008 15:23
Status : Hors ligne

Re: [..] 3 questions pour automatiser mes visites sur Internet

#4

Message par Damien35 »

non j'y avais déjà pensé :
Image

et puis au pire tant pis c'est juste une page de plus d'ouverte :P

non le plus gros pb c'est d'envoyer des données à word... :(
SurPriseS
Niveau 6
Niveau 6
Messages : 291
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] 3 questions pour automatiser mes visites sur Internet

#5

Message par SurPriseS »

Tu t'es planté dans la définition de _ienavigate ;) je l'utilise et sa fonctionne nikel :)
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] 3 questions pour automatiser mes visites sur Internet

#6

Message par ani »

Moi je peux pas aider sur ce sujet, je ne dispose pas de word
Damien35
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 23 janv. 2008 15:23
Status : Hors ligne

Re: [..] 3 questions pour automatiser mes visites sur Internet

#7

Message par Damien35 »

Update de mon problème:

J'ai réussi (enfin) à régler mes problèmes :D

pour word, pour ceux que ça intéresse :

Code : Tout sélectionner

    WinActivate("Test.doc - Microsoft Word")    
    $oTable = _IETableGetCollection ($oIE2, 6)
    $aTableData = _IETableWriteToArray ($oTable, True)
    For $j = 0 To 9
        $sValue = $aTableData[$j][1]            
        $oWordApp = _WordCreate (@ScriptDir & "\Test.doc")              
        $oDoc = _WordDocGetCollection ($oWordApp, 0)
        $oDoc.Range.insertAfter ($j+1)
        $oDoc.Range.insertAfter (@TAB)      ;tabulation
        $oDoc.Range.insertAfter ($sValue)   
        $oDoc.Range.insertAfter (@LF)       ;aller à la ligne
        Sleep(1000)
    Next
par contre j'ai un nouveau problème:

je voudrais cliquer plusieurs fois au même endroit!
j'ai essayé plusieurs méthodes :
1-

Code : Tout sélectionner

    $ocliclic =  _IEFormElementGetCollection($o_form2, 5)
    _IEAction ($ocliclic, "click")
    Sleep(1000)
    $ocliclic =  _IEFormElementGetCollection($o_form2, 5)
    _IEAction ($ocliclic, "click")
ceci ne clic qu'une seule fois sur ce qui m'intéresse!

2- si j'enlève le Sleep => il clic iinstantanément 2 fois!

3- si je mets en commentaires la 2e fois que je précise $ocliclic j'ai ce message d'erreur:
Image

4- si je fais:
1-

Code : Tout sélectionner

    $ocliclic =  _IEFormElementGetCollection($o_form2, 5)
    _IEAction ($ocliclic, "click")
    Sleep(1000)
    $ocliclic2 =  _IEFormElementGetCollection($o_form2, 5)
    _IEAction ($ocliclic2, "click")
il ne clic pas sur $ocliclic2

changement de méthodes :
5-

Code : Tout sélectionner

$ocliclic =  _IEFormElementGetCollection($o_form2, 5)
    _IEAction ($ocliclic, "focus")
    Send("{ENTER}")
    Sleep(1500)
    Send("{ENTER}")
 
alors idem : si je mets sleep il ne fais qu'un seul clic, si je ne le mets pas il m'en fait 2 d'un coup...


C'est la dernière étape de ma macro après j'ai finis!!!!

merci pour votre aide


EDIT : bon bah au final je me serais débrouillé tout seul d'un bout à l'autre... :? :?
ça m'aura pris pas mal de temps.
mon dernier problème venait d'une mauvaise MAJ du form (pour ceux que ça aurait intéressé)
A+
Répondre