测试网站页面,往往是考验测试眼力的时候,大多数情况都要打开网站页面对着原型图一点点比对。如果碰到网页加载太慢或者需要测试兼容性的时候很是心累,如果可以利用程序自动将对应的网页截图,然后直接拿着原型跟截图比对呢,会不会稍微好一些呢?
以下就是我个人写的网页爬虫小程序,程序主要是获取某网页链接及其页面中的所有有效链接,并将有效链接打开的页面截图保存到指定目录中
coding=utf-8 import requests from selenium import webdriver import os,time,re #获取搜狐网页所有有效链接,并将链接到的页面截图保存到指定目录中 class PS_sohu(object): def __init__(self,path): self.driver=webdriver.Firefox() if os.path.exists(path): os.chdir(path) else: os.mkdir(path) os.chdir(path) #获取搜狐网页所有的有效链接 def get_valid_link(self,url): response=requests.get(url) all_links=re.findall(r'href="(.*?)"',response.text) valid_links=[] #筛选出有效链接 for link in list(set(all_links)): if re.search(r'(\.css)',link): continue elif link.find('javascript')!=-1 or link.find('mailto')!=-1: continue elif link.strip()==''or link.strip()=='#'or link.strip()=='/': continue elif link.startswith('//'): link='http:'+link valid_links.append(link.strip()) else: valid_links.append(link.strip()) return valid_links #得到有效链接的截图 def get_picture(self,url_list): for url in url_list: try: self.driver.set_page_load_timeout(10)#设置网页加载超时时间为10秒 self.driver.get(url) self.driver.get_screenshot_as_file('%d.png'%time.time())#截取网页内容,已当前时间戳为图片命名保存 print self.driver.current_url#打印当前网页地址 except: s= u'当前网页超时:%s\n' %url #将超时的网站保存到文件中 with open('test.txt','a') as f: f.write(s) print s def quit(self): self.driver.quit() if __name__=="__main__": path=r'd:\dd\a' url='http://www.xxx.com' ps_sh=PS_sohu(path) valid_links=ps_sh.get_valid_link(url) s_time=time.time() ps_sh.get_picture(valid_links) print '用时:%d'%(time.time()-s_time) ps_sh.quit()