发布于2019-09-04 10:00 阅读(929) 评论(0) 点赞(15) 收藏(5)
#-*- coding:utf-8 -*-
import win32com.client, pythoncom
import time
ie = win32com.client.DispatchEx('InternetExplorer.Application.1')
ie.Visible = 1
ie.Navigate('http://ieeexplore.ieee.org/xpl/periodicals.jsp')
time.sleep( 5 )
ie.Document.getElementById("browse_keyword").value ="Computer"
ie.Document.getElementsByTagName("input")[24].click()
import win32com.client, pythoncom
import time
ie = win32com.client.DispatchEx('InternetExplorer.Application')
ie.Visible = 1
ie.Navigate('www.baidu.com')
time.sleep(5)
print 'browse_keword'
ie.Document.getElementById("kw").value ="Computer"
ie.Document.getElementById("su").click()
print 'Done!'
当运行第一部分代码时,它将弹出:
ie.Document.getElementById("browse_keyword").value ="Computer"
TypeError: getElementById() takes exactly 1 argument (2 given)
并且第二部分代码运行正常。使结果不同有什么区别?
这两种情况之间的区别与您指定的COM名称无关:InternetExplorer.Application
或者InternetExplorer.Application.1
导致完全相同的CLSID,它为您提供了一个IWebBrowser2
接口。运行时行为的差异完全取决于您检索的URL。
这里的区别可能是工作的页面是HTML而另一个是XHTML; 或者可能只是失败页面中的错误会阻止DOM正确初始化。无论它看起来是IE9解析器的“功能”。
请注意,如果启用兼容模式,则不会发生这种情况(在下面的第二行之后,我单击了地址栏中的兼容模式图标):
(Pdb) ie.Document.DocumentMode
9.0
(Pdb) ie.Document.getElementById("browse_keyword").value
*** TypeError: getElementById() takes exactly 1 argument (2 given)
(Pdb) ie.Document.documentMode
7.0
(Pdb) ie.Document.getElementById("browse_keyword").value
u''
不幸的是我不知道如何从脚本切换兼容模式(该documentMode
属性不可设置)。也许别人呢?
我认为,错误的参数计数来自COM:Python传入参数,COM对象拒绝具有误导性错误的调用。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/88544/e97202abf701d4c9f72d/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!