51Testing软件测试论坛

标题: Day5-2测试积点任务 [打印本页]

作者: lsekfe    时间: 2018-6-28 10:58
标题: Day5-2测试积点任务
问题:
Selenium 一坨寻找 404 页面的代码?
这坨代码解决的问题:
公司主站做好了,哪些路由配置有问题,或者没资源,nginx搞错了,404, 5xx,挨个点?

下面进入不正经时间
肯定是在造轮子,而且必须是方的.但wo孤落寡闻,在坛子上找了找,看到个c#工具

写完了也没仔细测, 凑合能用,真是凑合能用

只适用于特定的网站,不要指望改个网址就能用了. 一直认为开发出让所有人都能用的测试工具, 简直扯淡,等同于让所有人都幸福

为啥不用request-html,这个...,暂时不会,没看;

可以拓展:

需要用户登录后去扫,会Se就成
需要处理特殊超链接,比如不是写在<a href=xxx>那,像我们公司的网站的分页...
404了,没准是网络不好,再抓一次
愿意改成多线程多什么就去改吧
反正是凑合能用

[attach]116799[/attach]
代码如下:
  1. #! /usr/bin/env python3
  2. # coding=utf-8

  3. import time
  4. from urllib.parse import urljoin
  5. from selenium import webdriver
  6. from bs4 import BeautifulSoup
  7. from logzero import logger

  8. domain='https://www.yirendai.com/abc'
  9. title404="您访问的页面不存在-宜人贷"

  10. dr=webdriver.Firefox()

  11. def scrap_url(url,orginal_url=None,scrap=True):
  12.     """
  13.         a页面有b页面超链接,同时b页面有a页面超链接.访问a->解析出b->访问b->解析出a
  14.         ->访问a,不对a页面再次解析,此时scrap=False
  15.     """
  16.     status_code=200
  17.     try:
  18.         now=time.time()
  19.         dr.get(url)

  20.         #根据title判断/或者404页面文件都比较小
  21.         if dr.title==title404: status_code=404

  22.         html=dr.page_source
  23.         soup=BeautifulSoup(html,'html.parser')
  24.     except Exception as e:
  25.         dr.get_screenshot_as_base64('f{orginal_url}_to_{url}')
  26.     finally:
  27.         t='%.2f' %(time.time()-now)
  28.         if status_code==200:
  29.             mod="32m"
  30.         elif status_code==404:
  31.             mod="31m"
  32.         logger.debug(f'{orginal_url} to {url} \033[0;34m {t}s \033[0m '
  33.             f'\033[0;{mod}{status_code}\033[0m')

  34.     more_seeds=[]

  35.     #有些网站的站内的超链接不是href参数提供的,需要继续在if修改
  36.     # 有些还有外链,都是在这处理....
  37.     if scrap:
  38.         for a in soup.find_all(href=True):
  39.             if a['href'].startswith('/'):
  40.                 more_seeds.append((urljoin(domain,a['href']),url))
  41.     return more_seeds

  42. def main(domain):
  43.     seeds=scrap_url(domain)
  44.     old_urls=[]
  45.     while seeds:
  46.         seed,seeds=seeds[0],seeds[1:]
  47.         url,orginal_url=seed
  48.         if url not in old_urls:
  49.             more_seeds=scrap_url(url,orginal_url)
  50.             old_urls.append(url)
  51.         else:
  52.             more_seeds=scrap_url(url,orginal_url,False)
  53.         seeds.extend(more_seeds)

  54. main(domain)
复制代码







作者: qqq911    时间: 2018-6-29 10:53
这种用selenium感觉更麻烦
作者: 海海豚    时间: 2018-6-29 10:58
WEB端可以用XeruLinkSleuk这个工具来查看配置
作者: abcsell    时间: 2018-6-29 11:13
WEB端可以用XeruLinkSleuk这个工具来查看配置
作者: jingzizx    时间: 2018-6-29 12:35
这么麻烦啊
作者: 梦想家    时间: 2018-6-29 13:39

这种用selenium感觉更麻烦




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2