# -*- 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()