- # -*- 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()
python : COM-IE 操作1
最新推荐文章于 2024-03-02 10:12:31 发布