jenkins+jmeter+ant自动化接口测试集成

搭建环境(JDK、Ant、Jmeter、Jenkin最近版本):

JDK:jdk1.8.0_60

Ant:apache-ant-1.10.2

Jmeter: apache-jmeter-3.0

Jenkins:Jenkins 2.88

1、JDK的安装

双击JDK安装包,选择安装路径C:\Progrom Files\Java\jdk1.8.0_60路径下);

 


1)系统变量→新建 JAVA_HOME 变量 。

变量值填写jdk的安装目录(本人是 C:\Progrom Files\Java\jdk1.8.0_60);

 

2)系统变量→寻找 Path 变量→编辑

在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

 

3)系统变量→新建 CLASSPATH 变量

变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)

系统变量配置完毕

4)检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)

 

2、jmeter安装

1)解压apache-jmeter-3.0.zip到D:\Progrom Files目录下。

 

2)将以下两个文件夹下的插件拷贝到D:\Progrom Files\apache-jmeter-3.0\lib\ext目录下

 

 

3)环境变量配置


a、 设置环境变量,新建系统变量在变量名中输入:JMETER_HOME,变量值中输入:D:\Progrom Files\apache-jmeter-3.0,点击确定即可。

b、在环境变量CLASSSPATH中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;

%JMETER_HOME%\lib\logkit-2.0.jar;(注意:你要看下你的是不是logkit-2.0这个版本).

c、 检验是否配置成功 运行cmd 输入 jmeter -v (jmeter和 -v 之间有空格)

若如图所示 显示版本信息 则说明安装和配置成功。

 

3、安装ant

1)解压apache-ant-1.10.2.zip到D:\Progrom Files目录下;

 

2)配置环境变量

a、新建以下环境变量

ANT_HOME:D:\Progrom Files\apache-ant-1.9.7,此为你的ANT安装路径;

b、在环境变量PATH的最后面添加一下内容:

;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。

c、进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回城键,会显示出你安装的ANT版本,如果成功显示,说明你的配置应该是成功了。

 

3)本地调试使用ant构建运行Jmeter,并且生成jtl、Html报告;


jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,修改jmeter.properties文件 jmeter.save.saveservice.output_format=xml;
将apache-jmeter-3.0\extras\ant-jmeter-1.1.1.jar拷贝到apache-ant-1.10.2\lib目录下;
配置D:\Program Files\apache-jmeter-3.0\extras目录下build.xml文件
build文件配置

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<!-- (1)需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\Program Files\apache-jmeter-3.0"/>
<property name="report.title" value="report"/>
<!-- (2)jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\Program Files\apache-jmeter-3.0\reports\jtl"/>
<!-- (3)jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\Program Files\apache-jmeter-3.0\reports\html"/>
<!-- 生成的报告的前缀 -->
<property name="ReportName" value="TestReport"/>
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html"/>

<target name="run"> 
<antcall target="test"/> 
<antcall target="report"/> 
<!--antcall target="mail"/--> 
</target>
<target name="test"> 
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> 
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 
<!-- (4)build.xml的存放的路径-->
<testplans dir="D:\Program Files\apache-jmeter-3.0\demo" includes="*.jmx"/> 
<property name="jmeter.save.saveservice.output_format" value="xml"/> 
</jmeter> 
</target>
<path id="xslt.classpath"> 
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 
</path>
<target name="report"> 
<tstamp> 
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp> 
<xslt 
classpathref="xslt.classpath" 
force="true" 
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report.xsl"> 
<param name="dateReport" expression="${report.datestamp}"/> 
</xslt> 

<copy todir="${jmeter.result.html.dir}"> 
<fileset dir="${jmeter.home}/extras"> 
<include name="collapse.png"/> 
<include name="expand.png"/> 
</fileset> 
</copy> 
</target>
<path id="lib_classpath">
<fileset dir="${basedir}/">
<include name="mail*.jar" />
<include name="activation*.jar" />
<include name="commons-email*.jar" />
<include name="ant-contrib*.jar" />
</fileset>
</path>
<!--target name="mail">
<for list="[email protected]" param="tmp" >
<sequential>
<echo>message @{tmp}</echo> 
<mail mailhost="smtp.thunisoft.com" mailport="25" ssl="false" subject="ant mail" messagemimetype="text/html" user="zhangjn" password="*******" tolist="@{tmp}">
<from address="[email protected]" />
<fileset dir="${jmeter.result.html.dir}">
<include name="*.html" />
<include name="*.png" />
</fileset>
<message>支持多人同时发邮件!!<br /><br /></message>
</mail>
</sequential>
</for>
</target-->
</project>

  

备注:注释中的(1)(2)(3)(4)该成自己的路径;jmeter-results-detail-report.xsl这个配置值在你的

${jmeter.home}/extras目录下是不是这个名称,配置改成你对应的名称就可以了;把build.xml文件放到(4)中配置的这个路径中
D:\Program Files\apache-jmeter-3.0\demo,并把要执行的脚本也放到同一目录下,如图:


5、cmd到demo的目录下执行ant命令,如图:

 

以上说明执行成功了,到你配置的报告目录下去看生成的报告D:\Program Files\apache-jmeter-3.0\reports\html

 

备注:如果生成的报告为空的,可能是你的jmeter-results-detail-report.xsl配置有问题可以参考一下配置:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<!-- 
Stylesheet for processing 2.1 output format test result files 
To uses this directly in a browser, add the following to the JTL file as line 2:
<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report_21.xsl"?>
and you can then view the JTL in a browser
-->

<xsl:output method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />

<!-- Defined parameters (overrideable) -->
<xsl:param name="showData" select="‘n‘"/>
<xsl:param name="titleReport" select="‘Load Test Results‘"/>
<xsl:param name="dateReport" select="‘date not defined‘"/>

<xsl:template match="testResults">
<html>
<head>
<title><xsl:value-of select="$titleReport" /></title>
<style type="text/css">
body {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
table tr td, table tr th {
font-size: 68%;
}
table.details tr th{
color: #ffffff;
font-weight: bold;
text-align:center;
background:#2674a6;
white-space: nowrap;
}
table.details tr td{
background:#eeeee0;
white-space: nowrap;
}
h1 {
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
.Failure {
font-weight:bold; color:red;
}


img
{
border-width: 0px;
}

.expand_link
{
position=absolute;
right: 0px;
width: 27px;
top: 1px;
height: 27px;
}

.page_details
{
display: none;
}

.page_details_expanded
{
display: block;
display/* hide this definition from IE5/6 */: table-row;
}


</style>
<script language="JavaScript"><![CDATA[
function expand(details_id)
{

document.getElementById(details_id).className = "page_details_expanded";
}

function collapse(details_id)
{

document.getElementById(details_id).className = "page_details";
}

function change(details_id)
{
if(document.getElementById(details_id+"_image").src.match("expand"))
{
document.getElementById(details_id+"_image").src = "collapse.png";
expand(details_id);
}
else
{
document.getElementById(details_id+"_image").src = "expand.png";
collapse(details_id);
} 
}
]]></script>
</head>
<body>

<xsl:call-template name="pageHeader" />

<xsl:call-template name="summary" />
<hr size="1" width="95%" align="center" />

<xsl:call-template name="pagelist" />
<hr size="1" width="95%" align="center" />

<xsl:call-template name="detail" />

</body>
</html>
</xsl:template>

<xsl:template name="pageHeader">
<h1><xsl:value-of select="$titleReport" /></h1>
<table width="100%">
<tr>
<td align="left">Date report: <xsl:value-of select="$dateReport" /></td>
<td align="right">Designed for use with <a >JMeter</a> and <a >Ant</a>.</td>
</tr>
</table>
<hr size="1" />
</xsl:template>

<xsl:template name="summary">
<h2>Summary</h2>
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th># Samples</th>
<th>Failures</th>
<th>Success Rate</th>
<th>Average Time</th>
<th>Min Time</th>
<th>Max Time</th>
</tr>
<tr valign="top">
<xsl:variable name="allCount" select="count(/testResults/*)" />
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s=‘false‘])" />
<xsl:variable name="allSuccessCount" select="count(/testResults/*[attribute::s=‘true‘])" />
<xsl:variable name="allSuccessPercent" select="$allSuccessCount div $allCount" />
<xsl:variable name="allTotalTime" select="sum(/testResults/*/@t)" />
<xsl:variable name="allAverageTime" select="$allTotalTime div $allCount" />
<xsl:variable name="allMinTime">
<xsl:call-template name="min">
<xsl:with-param name="nodes" select="/testResults/*/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="allMaxTime">
<xsl:call-template name="max">
<xsl:with-param name="nodes" select="/testResults/*/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$allFailureCount > 0">Failure</xsl:when>
</xsl:choose>
</xsl:attribute>
<td align="center">
<xsl:value-of select="$allCount" />
</td>
<td align="center">
<xsl:value-of select="$allFailureCount" />
</td>
<td align="center">
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$allSuccessPercent" />
</xsl:call-template>
</td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allAverageTime" />
</xsl:call-template>
</td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allMinTime" />
</xsl:call-template>
</td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allMaxTime" />
</xsl:call-template>
</td>
</tr>
</table>
</xsl:template>

<xsl:template name="pagelist">
<h2>Pages</h2>
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>URL</th>
<th># Samples</th>
<th>Failures</th>
<th>Success Rate</th>
<th>Average Time</th>
<th>Min Time</th>
<th>Max Time</th>
<th></th>
</tr>
<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">
<xsl:variable name="label" select="@lb" />
<xsl:variable name="count" select="count(../*[@lb = current()/@lb])" />
<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s=‘false‘])" />
<xsl:variable name="successCount" select="count(../*[@lb = current()/@lb][attribute::s=‘true‘])" />
<xsl:variable name="successPercent" select="$successCount div $count" />
<xsl:variable name="totalTime" select="sum(../*[@lb = current()/@lb]/@t)" />
<xsl:variable name="averageTime" select="$totalTime div $count" />
<xsl:variable name="minTime">
<xsl:call-template name="min">
<xsl:with-param name="nodes" select="../*[@lb = current()/@lb]/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="maxTime">
<xsl:call-template name="max">
<xsl:with-param name="nodes" select="../*[@lb = current()/@lb]/@t" />
</xsl:call-template>
</xsl:variable>
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$failureCount > 0">Failure</xsl:when>
</xsl:choose>
</xsl:attribute>
<td>
<xsl:if test="$failureCount > 0">
<a><xsl:attribute name="href">#<xsl:value-of select="$label" /></xsl:attribute>
<xsl:value-of select="$label" />
</a>
</xsl:if>
<xsl:if test="0 >= $failureCount">
<xsl:value-of select="$label" />
</xsl:if>
</td>
<td align="center">
<xsl:value-of select="$count" />
</td>
<td align="center">
<xsl:value-of select="$failureCount" />
</td>
<td align="right">
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$successPercent" />
</xsl:call-template>
</td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$averageTime" />
</xsl:call-template>
</td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$minTime" />
</xsl:call-template>
</td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$maxTime" />
</xsl:call-template>
</td>
<td align="center">
<a href="">
<xsl:attribute name="href"><xsl:text/>javascript:change(‘page_details_<xsl:value-of select="position()" />‘)</xsl:attribute>
<img src="expand.png" alt="expand/collapse"><xsl:attribute name="id"><xsl:text/>page_details_<xsl:value-of select="position()" />_image</xsl:attribute></img> 
</a>
</td>
</tr>

<tr class="page_details">
<xsl:attribute name="id"><xsl:text/>page_details_<xsl:value-of select="position()" /></xsl:attribute>
<td colspan="8" bgcolor="#FF0000">
<div align="center">
<b>Details for Page "<xsl:value-of select="$label" />"</b>
<table bordercolor="#000000" bgcolor="#2674A6" border="0" cellpadding="1" cellspacing="1" width="95%">
<tr>
<th>Thread</th>
<th>Iteration</th>
<th>Time (milliseconds)</th>
<th>Bytes</th>
<th>Success</th>
</tr>

<xsl:for-each select="../*[@lb = $label and @tn != $label]"> 
<tr>
<td><xsl:value-of select="@tn" /></td>
<td align="center"><xsl:value-of select="position()" /></td>
<td align="right"><xsl:value-of select="@t" /></td>
<!-- TODO allow for missing bytes field -->
<td align="right"><xsl:value-of select="@by" /></td>
<td align="center"><xsl:value-of select="@s" /></td>
</tr>
</xsl:for-each>

</table>
</div>
</td>
</tr>

</xsl:for-each>
</table>
</xsl:template>

<xsl:template name="detail">
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s=‘false‘])" />

<xsl:if test="$allFailureCount > 0">
<h2>Failure Detail</h2>

<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">

<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s=‘false‘])" />

<xsl:if test="$failureCount > 0">
<h3><xsl:value-of select="@lb" /><a><xsl:attribute name="name"><xsl:value-of select="@lb" /></xsl:attribute></a></h3>

<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Response</th>
<th>Failure Message</th>
<xsl:if test="$showData = ‘y‘">
<th>Response Data</th>
</xsl:if>
</tr>

<xsl:for-each select="/testResults/*[@lb = current()/@lb][attribute::s=‘false‘]">
<tr>
<td><xsl:value-of select="@rc | @rs" /> - <xsl:value-of select="@rm" /></td>
<td><xsl:value-of select="assertionResult/failureMessage" /></td>
<xsl:if test="$showData = ‘y‘">
<td><xsl:value-of select="./binary" /></td>
</xsl:if>
</tr>
</xsl:for-each>

</table>
</xsl:if>

</xsl:for-each>
</xsl:if>
</xsl:template>

<xsl:template name="min">
<xsl:param name="nodes" select="/.." />
<xsl:choose>
<xsl:when test="not($nodes)">NaN</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nodes">
<xsl:sort data-type="number" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(.)" />
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template name="max">
<xsl:param name="nodes" select="/.." />
<xsl:choose>
<xsl:when test="not($nodes)">NaN</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nodes">
<xsl:sort data-type="number" order="descending" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(.)" />
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template name="display-percent">
<xsl:param name="value" />
<xsl:value-of select="format-number($value,‘0.00%‘)" />
</xsl:template>

<xsl:template name="display-time">
<xsl:param name="value" />
<xsl:value-of select="format-number($value,‘0 ms‘)" />
</xsl:template>

</xsl:stylesheet>

 

 

4、jenkins安装

1)之前本地已经安装过jenkins了,这里就不在讲如何安装jenkins。

2)jenkins构建项目

a、输入任务名称,点击构建一个自由风格的软件项目,点击确定

 

b、在构建中添加Invoke Ant

 

 

 

c、在点击高级

 

配置你在build.xml文件中配置的build.xml的路径,点击保存

d、点击立即构建,出现蓝色说明执行成功了,如图:

 

备注:到你在build.xml中配置的报告路径去找执行后的报告就可以了。————————————————版权声明:本文为CSDN博主「qq_30684681」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_30684681/article/details/79577372

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金
2019香港 六 合 彩资料大全 濮阳县| 张家界市| 秭归县| 全椒县| 于田县| 鸡西市| 连城县| 炉霍县| 濮阳市| 扶绥县| 东至县| 时尚| 日土县| 武宁县| 西昌市| 玛曲县| 永吉县| 德惠市| 本溪市| 肥乡县| 广宗县| 奇台县| 曲靖市| 本溪| 平谷区| 武冈市| 敖汉旗| 富民县| 贞丰县| 同仁县| 铁岭市| 杨浦区| 烟台市| 平阴县| 石狮市| 长泰县| 财经| 大洼县| 正宁县| 新干县| 马公市| 东乡县| 陵川县| 南召县| 凌云县| 昔阳县| 南皮县| 青海省| 和政县| 开阳县| 滨州市| 民丰县| 宜章县| 台湾省| 禹州市| 余庆县| 景东| 十堰市| 茶陵县| 洪湖市| 赤峰市| 安泽县| 九龙城区| 乌拉特前旗| 汽车| 门头沟区| 胶州市| 外汇| 北海市| 威宁| 礼泉县| 长葛市| 浪卡子县| 灌阳县| 寿光市| 湖口县| 晋州市| 富锦市| 岳普湖县| 宜州市| 岫岩| 吉安县| 信阳市| 沿河| 南川市| 榆林市| 万全县| 庆安县| 手游| 洛宁县| 抚顺市| 乌恰县| 库车县| 德化县| 扎囊县| 温州市| 务川| 延长县| 怀仁县| 辉南县| 建阳市| 崇义县| 巴南区| 墨竹工卡县| 新民市| 安岳县| 河源市| 太仓市| 金乡县| 北安市| 隆子县| 额敏县| 河曲县| 资溪县| 加查县| 井研县| 个旧市| 陇川县| 上蔡县| 浦东新区| 泸西县| 辽阳县| 浦县| 会东县| 藁城市| 乌兰察布市| 柳江县| 城口县| 大方县| 镇雄县| 汶川县| 永川市| 邹城市| 延寿县| 安国市| 化州市| 侯马市| 加查县| 梅河口市| 明水县| 正安县| 剑阁县| 三亚市| 阿巴嘎旗| 区。| 宜君县| 连平县| 临朐县| 郴州市| 九台市| 普兰店市| 金沙县| 芜湖市| 温宿县| 渝北区| 石河子市| 行唐县| 巴林左旗| 平谷区| 耿马| 云梦县| 淮安市| 酒泉市| 赤水市| 江门市| 江阴市| 宾川县| 东丰县| 高唐县| 乌拉特中旗| 青海省| 苗栗市| 共和县| 遂宁市| 郸城县| 重庆市| 汉寿县| 江油市| 南陵县| 鄂托克前旗| 大名县| 洛隆县| 阿拉善右旗| 玉树县| 梁山县| 雷山县| 循化| 龙口市| 石棉县| 双流县| 永兴县| 麻栗坡县| 舒城县| 胶南市| 衡水市| 荃湾区| 禄丰县| 六安市| 武宣县| 宁海县| 左贡县| 克什克腾旗| 资源县| 陆川县| 登封市| 宿州市| 大兴区| 略阳县| 临邑县| 涞源县| 盐源县| 鄢陵县| 玛多县| 屏南县| 化州市| 麦盖提县| 高陵县| 稻城县| 乐平市| 大同县| 河津市| 酉阳| 桂平市| 福鼎市| 临西县| 墨竹工卡县| 万州区| 大石桥市| 会东县| 科技| 乐东| 报价| 普格县| 祥云县| 罗城| 泸溪县| 吴川市| 上饶县| 抚远县| 太保市| 江永县| 乌恰县| 德保县| 昔阳县| 美姑县| 邢台市| 宁阳县| 上饶市| 荥阳市| 合阳县| 九龙城区| 达日县| 剑河县| 阳曲县| 阜新| 新民市| 嘉义市| 谷城县| 临汾市| 乐业县| 子洲县| 高雄县| 铁岭市| 潢川县| 沾化县| 丹江口市| 巩义市| 无棣县| 河津市| 雅江县| 郧西县| 东光县| 沙坪坝区| 仙游县| 麦盖提县| 余干县| 达孜县| 广灵县| 陇南市| 正镶白旗| 永泰县| 高青县| 雷山县| 会泽县| 红安县| 阿拉善右旗| 灵丘县| 杂多县| 蒙山县| 磐石市| 清新县| 临夏市| 高雄县| 禄劝| 江达县| 余庆县| 称多县| 晴隆县| 策勒县| 尼勒克县| 水城县| 新余市| 临汾市| 赤壁市| 靖边县| 静安区| 巴楚县| 兴和县| 太湖县| 太康县| 黔江区| 阿鲁科尔沁旗| 黄梅县| 平和县| 云霄县| 沛县| 紫阳县| 安庆市| 永寿县| 和龙市| 盈江县| 久治县| 明水县| 高平市| 宁国市| 连江县| 南京市| 五大连池市| 九江市| 津市市| 太湖县| 通河县| 神池县| 普宁市| 大同市| 惠州市| 介休市| 林周县| 唐海县| 邵阳市| 古蔺县| 琼中| 秀山| 德保县| 霍邱县| 柳河县| 台南县| 华蓥市| 德清县| 福泉市| 庆安县| 彭州市| 肃宁县| 安图县| 萨迦县| 个旧市| 班玛县| 丰原市| 吉林市| 霍州市| 平乡县| 永寿县| 枣庄市| 阜平县| 筠连县| 乌兰浩特市| 唐海县| 江永县| 富宁县| 甘南县| 辉县市| 中江县| 绥江县| 南木林县| 萨嘎县| 华宁县| 合水县| 左贡县| 岳西县| 广平县| 大渡口区| 天气| 土默特左旗| 南充市| 鸡泽县| 泰顺县| 许昌县| 剑阁县| 南丹县| 兴义市| 东方市| 梅州市| 潢川县| 平泉县| 永登县| 三穗县| 阳高县| 陆川县| 彭水| 曲麻莱县| 清新县| 叶城县| 霸州市| 介休市| 永和县| 顺义区| 和静县| 边坝县| 安龙县| 钟祥市| 嵊泗县| 墨脱县| 大新县| 吉林省| 江北区| 承德县| 雷山县| 红桥区| 藁城市| 馆陶县| 天镇县| 普洱| 义马市| 七台河市| 阿图什市| 阿勒泰市| 宜章县| 门源| 金山区| 屯昌县| 汕头市| 蓝田县| 嘉荫县| 安陆市| 梁平县| 共和县| 长阳| 马尔康县| 纳雍县| 玛多县| 贵州省| 南城县| 南开区| 九江市| 延边| 仙居县| 若尔盖县| 西盟| 克山县| 瑞丽市| 白水县| 临潭县| 宣武区| 广西| 博客| 连平县| 阜南县| 铅山县| 邢台市| 泸溪县| 宁海县| 青海省| 巴彦县| 西华县| 昌吉市| 巴彦淖尔市| 渝北区| 民乐县| 阿鲁科尔沁旗| 潍坊市| 高阳县| 治多县| 大关县| 霞浦县| 邢台县| 南岸区| 福安市| 射洪县| 阳原县| 开封县| 林芝县| 耿马| 融水| 航空| 隆化县| 静安区| 四平市| 呼图壁县| 城市| 保山市| 铜鼓县| 洞口县| 尖扎县| 盐城市| 布拖县| 遂川县| 汉源县| 宁晋县| 河曲县| 东乌珠穆沁旗| 韩城市| 兴义市| 安平县| 榕江县| 九龙坡区| 贺兰县| 湘阴县| 凤台县| 金塔县| 云浮市| http://wap.yqo2j4rl6v.fun http://www.bo2020irons.fun http://m.yqo6j7rl1v.fun http://m.gz1980respectc.fun http://m.bo2020notices.fun http://m.yqo1j9rl9v.fun http://wap.jvz1j0r2o.fun http://wap.gz1980juzpc.fun http://m.bo2020pockets.fun http://www.yqo3j8rl1v.fun http://wap.yqo6j5rl2v.fun http://www.gz1980webc.fun http://www.bo2020counters.fun http://wap.bo2020trails.fun http://wap.yqo1j9rl8v.fun