背景:公司对网站重要页面的UE要求很高,需要测试不同浏览器的兼容性,还要考虑分辨率的问题,测试成本很高。
一个想法: 用python操作ie,自动截图,每次测试的时候只需要提供测试url,并查看几十张截图就ok了。
问题分析:将页面看做是数据+html模板样式的整合,多数UE的问题是由于数据影响到了样式,比如设定某个div宽度为20,但是由于div内数据有问题,比如出现了一长串没有空格的数字,就有可能将div撑大,造成页面显示异常。
解决手段:针对已经发生的问题,通过python打开页面,然后动态调整元素的innerHTML,之后将每个测试case都截图发给测试人员。
Demo: 预先安装ActivePython:
import win32com
import win32com.client
import time
def load(ie):
while ie.Busy:
time.sleep(1)
def ite(root):
if root.NodeName == 'A' or root.NodeName == 'a':
print root.Href
ch = root.ChildNodes
len = ch.Length
for i in range(0,len):
c = ch[i]
ite(c)
urlMap = {}
ie = win32com.client.Dispatch('InternetExplorer.Application')
ie.Visible = 1
#ie.Navigate("www.baidu.com")
#load(ie)
#doc = ie.Document
#doc.getElementById('kw').value='mp3'
#doc.forms[0].submit()
#load(ie)
ie.Navigate("http://www.sogou.com/web?query=mp3")
load(ie)
tm = None
for i in range(e.ChildNodes.Length):
n = e.ChildNodes(i)
if n.TagName == 'DL':
al = n.getElementsByTagName('A')
al[0].InnerHTML='WWWWWWWWWWWW'
tm = al[0]
for j in range( al.Length ):
print al[j].InnerHTML
print ie.ReadyState
doc = ie.Document
e = doc.getElementById('sidebar')
ie.Quit()