# -*- coding:UTF-8 -*-
from time import sleep
import win32com.client
from win32com.client import DispatchEx
class COM_IE:
def __init__(self,url=None):
self.url = url
self.Visible = 1
self.ie = self.openIE(url)
def ExistIE(self,url):
ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'
ies=DispatchEx(ShellWindowsCLSID)
if len(ies)==0:
return None
for ie in ies:
if ie.LocationURL==url:
return ie
return None
def NewIE(self,url):
ie = DispatchEx("InternetExplorer.Application")
ie.Visible = self.Visible
ie.Navigate(url)
return ie
def openIE(self,url):
ie = self.ExistIE(url)
if ie==None:
ie = self.NewIE(url)
return ie
def WaitIE(self):
# while self.ie.Busy:
# leep(1)
while 1:
state = self.ie.ReadyState
if state ==4:
# print "load done..."
break
sleep(1)
def Visible(self):
self.ie.Visible = self.Visible
def GetBody(self):
self.WaitIE()
return self.ie.Document.body
def GetNodes(self,parentNode,tag):
"""
>>> coldiv=GetNodes(body,"div")
"""
childNodes=[]
for childNode in parentNode.getElementsByTagName(tag):
childNodes.append(childNode)
return childNodes
def NodeByAttr(self,Nodes,nodeattr,nodeval):
"""
>>> div_id_editor=NodeByAttr(coldiv,"id","editor_ifr")
"""
for node in Nodes:
if str(node.getAttribute(nodeattr))==nodeval:
return node
return None
'''
def SetNodeHtml(self,node,val):
node.innerHTML=val
def SetNodeVal(self,node,val):
node.value=val
def NodeClick(self,node):
node.click()
'''
def SetNodeHtml(self,body,node_type,node_attr,node_attr_val,node_inner_html):
tags = self.GetNodes(body,node_type)
node = self.NodeByAttr(tags,node_attr,node_attr_val)
node.innerHTML = node_inner_html
def SetNodeVal(self,body,node_type,node_attr,node_attr_val,node_value):
tags = self.GetNodes(body,node_type)
node = self.NodeByAttr(tags,node_attr,node_attr_val)
node.value = node_value
def NodeClick(self,body,node_type,node_attr,node_attr_val):
tags = self.GetNodes(body,node_type)
node = self.NodeByAttr(tags,node_attr,node_attr_val)
node.click()
def Quit(self):
self.ie.Quit()
if __name__=="__main__":
url = "http://www.baidu.com/"
IE = COM_IE(url)
BODY = IE.GetBody()
IE.SetNodeVal(BODY,"input","id","kw","agoago2009")
IE.NodeClick(BODY,"input","id","su")
raw_input('click enter to exit')
IE.Quit()
COM-IE-(1)
最新推荐文章于 2023-12-20 20:39:42 发布