getElementById()只取1个参数(给定2个)

时间:2016-08-29 11:48:36

标签: python win32com

我想要自动执行Internet Explorer。打开Internet Explorer,导航到login.live.com并将值设置到电子邮件文本框中。

这是简单的脚本:

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'

最后一行总是返回以下TypeError:

  

getElementById()只需要1个参数(给定2个)

当我尝试通过Internet Explorer的控制台添加值时,它可以正常工作。

顺便说一下。 getElementsByTagName()方法可以正常运行。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

好的..我为此写了一个解决方法:

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

for field in inputs:
    if field.id == 'i0116':
        email = field
        break
email.value = 'example@test.com'

对于浏览器自动化,我建议使用Selenium库。

答案 1 :(得分:0)

由于this回答建议你必须使用

public void Execute(IJobExecutionContext context)
{
    lock (_lockObj)
    {
       // ... some HTTP job that can take 5 to 30 seconds ...
    }
}