2016-08-29 4 views
0

Je veux faire une automatisation d'Internet Explorer. Ouvrez Internet Explorer, accédez à login.live.com et définissez une valeur dans la zone de texte de l'e-mail.getElementById() prend exactement 1 argument (2 donnés)

Voici le script simple:

import win32com.client 
import time 

IE = win32com.client.DispatchEx("InternetExplorer.Application") 
IE.Visible = 1 
IE.Navigate('login.live.com') 

time.sleep(5) 

DOC = IE.document 
DOC.getElementById('i0116').value = 'test' 

La dernière ligne retourne toujours le TypeError suivant:

getElementById() takes exactly 1 argument (2 given)

Lorsque je tente d'ajouter la valeur via la console d'Internet Explorer, il fonctionne.

Btw. La méthode getElementsByTagName() fonctionne sans erreurs.

Merci pour toute aide!

+1

Espérons que cela aidera. http://stackoverflow.com/questions/9816967/interesting-getelementbyid-takes-exactly-1-argument-2-given-sometimes-it – ravindar

+0

a eu la même erreur qu'avant. mais merci pour l'indice. –

Répondre

1

Ok .. J'ai écrit une solution pour cela:

DOC = IE.Document 
inputs = DOC.documentElement.getElementsByTagName('input') 

for field in inputs: 
    if field.id == 'i0116': 
     email = field 
     break 
email.value = '[email protected]' 

Pour l'automatisation du navigateur Je recommande d'utiliser la bibliothèque Selenium.

0

Comme this réponse que vous devez utiliser suggère

DOC.Body.getElementById('i0116').value = 'test' 
+0

J'ai également essayé ceci mais alors il renvoie une erreur d'attribut: AttributeError: .getElementById –