使用这个模块有一些时间了,也尝试着用它来编写脚本操,用以操作IE浏览器做自动化测试,如果不是很复杂,这个模块可以胜任。
如何模拟IE操作,我已经写过一篇帖子,其实非常简单,但是模块对中文的支持不好,对frame的支持也不好,今天要和大家分享的就是如何解决中文和frame的问题。
以clickLink(self, name)这个函数为例,如果直接使用模块提供的这个函数,那么中文的链接是不会有效果的,好在源代码可以随意方便的修改,而我并没有直接修改,而是仿写了一个clickLinkByCN(self,name),具体代码如下:
def clickLinkByCN(self,name):
links = self._ie.Document.links.length
for i in range(links):
if self._ie.Document.links[i].innertext.encode('utf-8')==name: 这句话是关键
return self.clickElement(self._ie.Document.links[i])
看到了吧,其实很简单,只要修改这一句,便能支持中文链接。
说到frame,模块无法获得它里面的控件,不过没有关系,我们可以直接请求frame载入的内容,做到这一点,只需要一个navigate(self, url)函数即可,我们通过这个函数直接去申请frame要载入的内容,这样一来,浏览器中显示的内容就会成为原本被嵌入到frame中的内容,这时对页面的操作就将畅通无阻。