一种电视应用的自动化测试方法及系统与流程

文档序号:11389082阅读:363来源:国知局
一种电视应用的自动化测试方法及系统与流程

本发明涉及计算机测试技术领域,特别是一种电视应用的自动化测试方法及系统。



背景技术:

随着科技发展,智能电视的概念从诞生之日起,便以星火燎原的态势迅速发展。当前,智能电视产业发展十分迅速,规模持续扩大,新兴技术不断涌现,应用服务日益丰富,生态体系加速构建,融合态势愈发显著。随着智能电视的应用服务不断的更新发布,在带给用户最佳体验的前提下,应用服务在上线发布前,都需要进行大量的测试。但当前的电视应用的测试,大部分公司依旧采用手工测试,很少涉及到自动化测试。现有的电视应用测试方法具有以下不足:(1)手工测试的验证时间过长不能满足快速上线需求,同时大量的重复工作导致测试人员的加班时间长。(2)单次测试仅针对优化功能点,导致单次测试覆盖率低。(3)手工测试同时存在误差率较高的情况。(4)模拟电视机的操作行为是当前电视应用自动化测试的一大难点。(5)电视应用的自动化测试无法模拟异常场景。(6)电视应用在操作过程中的数据反馈的验证问题一直未得到妥善解决。因此,为了解决上述问题,需要一种适合电视应用的自动化测试方法及系统。



技术实现要素:

本发明旨在提供一种电视应用的自动化测试方法及系统,减少测试时间,提高测试效率;大大节约人力,无需重复工作;保障测试正确率,降低误差率;提高测试覆盖率。

为解决上述技术问题,本发明所采用的技术方案是:一种电视应用的自动化测试方法,包括以下步骤:

1)在同一个局域网内,通过自动化测试终端上传电视应用apk安装包至处于同一个局域网内的多个独立的电视机,即电视机集群,并下发安装指令给所述电视机集群,自动化测试终端对待测试的电视机进行apk包安装;

2)根据不同应用服务或业务场景搭建正常或异常的测试环境,同时将所述测试环境配置下发至完成apk包安装的电视机集群,从而使得待测试的电视机一一对应彼此独立的测试环境;同时编写python自动化测试脚本,并动态等待页面响应,自动操作电视机,然后通过自动化测试终端,下发测试指令给电视机集群,针对待测电视机及其应用服务进行测试;

3)根据步骤2)中搭建的测试环境,设置电视机集群的测试场景,在该测试场景上运行所述python自动化测试脚本,并根据所述python自动化测试脚本模拟电视机按键操作,实现电视端的自动化操作,在电视端的自动化操作过程中,采用python日志服务程序保存电视端应用服务的测试数据,然后编写python测试验证脚本,解析当前的日志或数据,并与预期结果分析比较,最终返回测试结果。

步骤2)中,针对不同应用服务或业务搭建测试环境时,采用python服务程序构建的测试环境,不但解决了电视应用无法模拟异常测试环境的问题,而且明确开发与测试的职责界限,此后,测试环境不需要开发人员干预或提供,保证测试流程的独立性,测试结果的可靠性。其后续将所述测试环境配置下发至电视机集群的具体实现过程包括:

1)针对不同的应用服务或业务场景,截获其线上环境的请求,根据测试需求返回不同的请求结果,从而模拟各种测试场景;针对搭建测试环境服务,采用django框架,编写python服务程序(python服务程序即用python语言实现截获线上环境的请求,并返回不同的请求结果的整个流程);启动python服务程序,外部通过端口访问python服务程序,对外提供服务;

2)搭建nginx服务器,配置nginx文件,提供对外服务时将端口访问转为设置域名host;

3)自动化测试终端下发adb命令至待测电视机,该命令为配置相应的host,或取消相应的host,即为待测电视机设置相应的测试环境,或取消测试环境。

步骤2)中,采用appium自动化测试框架,基于所述appium自动化测试框架编写python自动化测试脚本。基于该测试框架编写的python自动化测试脚本通过实现模拟电视机的遥控器按键操作,完美解决了自动化操作电视机的问题,从而能够实现电视机应用的自动化测试。

本发明中,python自动化测试脚本的具体编写过程包括:设置appium的基本参数;编写测试函数,所述测试函数内部包括模拟键盘发送内容和验证电视响应反馈的页面元素是否正确,测试函数内部采用python的异常处理机制来处理程序中的异常情况,当存在异常的情况下,进入程序报错退出流程,否则,进入正常的后续处理流程(例如,比如搜索“快乐大本营”,然后播放快乐大本营的某一个节目,正常的后续处理流程,就是指搜索成功后的播放流程)。该python自动化测试脚本采用异常机制巧妙解决了测试中面临的人工不能已知并干预的问题。测试脚本的稳定性明显降低测试过程中的误差率;脚本反复多次运行,大大提高了测试效率;针对单次测试,测试脚本的回归功能覆盖(非单个功能点),大大提高了覆盖率。

python日志服务程序的具体编写过程为:截获日志请求接口;将全部的日志请求接口返回的数据采用文件的形式存入日志服务器。

python测试验证脚本的的具体编写过程为:解析日志服务器中众多不同的日志数据;一一比较分析并验证以上数据的正确性。

本发明采用python日志服务程序摒弃了传统采用软件抓包方式,不但彻底解决了软件抓包中的丢包问题,而且其在电视应用的解决数据反馈验证的问题的方案,为后续测试技术在其他服务端的扩展打开了新的思路。

相应地,本发明还提供了一种电视应用的自动化测试系统,包括:

apk安装模块:用于在同一个局域网内,通过自动化测试终端上传电视应用apk安装包至处于同一个局域网内的多个独立的电视机,即电视机集群,并下发安装指令给所述电视机集群,自动化测试终端对待测试的电视机进行apk包安装;

测试环境搭建模块:用于根据不同应用服务或业务场景搭建正常或异常的测试环境,同时将所述测试环境配置下发至完成apk包安装的电视机集群,从而使得待测试的电视机一一对应彼此独立的测试环境;

自动化测试模块:用于编写python自动化测试脚本,并动态等待页面响应,自动操作电视机,然后通过自动化测试终端,下发测试指令给电视机集群,针对待测电视机及其应用服务进行测试;

测试结果分析模块:用于根据搭建的测试环境,设置电视机集群的测试场景,在该测试场景上运行所述python自动化测试脚本,并根据所述python自动化测试脚本模拟电视机按键操作,实现电视端的自动化操作,在电视端的自动化操作过程中,采用python日志服务程序保存电视端应用服务的测试数据,然后编写python测试验证脚本,解析当前的日志或数据,并与预期结果分析比较,最终返回测试结果。

与现有技术相比,本发明所具有的有益效果为:本发明解决了电视机的自动化测试关键问题,针对电视机遥控器的操作行为采用了按键模拟操作的方式实现电视机的自动化;通过对电视应用的自动化测试,大大提高测试效率,降低人工成本,保障测试正确率,降低误差率,采用异常测试环境模拟,大大提高了测试覆盖率;实现了电视机集群的自动化测试。

附图说明

图1为本发明电视应用的测试框架;

图2为本发明电视应用的测试流程。

具体实施方式

本发明具体实现过程如下:

步骤1:在同一个局域网内,通过自动化测试终端上传电视应用apk安装包至处于同一个局域网内的众多独立的搭载安卓操作系统(android)的电视机(简称电视机集群),并下发安装指令给电视机集群,自动化测试终端对待测试的电视机进行apk包安装。

步骤2:步骤1中已安装apk包至待测电视机,本发明主要测试的是电视机的应用软件,任何业务测试前,需要搭建独立可控的测试环境,针对电视应用的测试来说,异常场景的测试环境搭建尤其重要。具体针对搭建测试环境服务,则根据不同应用服务或业务场景搭建正常或异常的测试环境,同时将独立可控的测试环境配置下发至电视机集群,从而使得待测试的电视机一一对应彼此独立的测试环境。

步骤3:对于自动化测试来说,测试环境搭建成功后,需要进行测试脚本编写。如何通过脚本实现模拟电视机的操作行为是当前电视应用自动化测试的一大难点。当前众多的实现自动模拟人工操作的技术一般基于识别当前机器设备的页面元素属性,从而针对已识别的页面元素进行模拟操作。电视机设备由于其页面元素的特殊性只能识别部分内容,并不能识别所有的控件。同时电视机是通过遥控器进行操作,因而本发明需要实现模拟遥控器的行为的功能,从而实现自动操作电视机。本发明中python脚本里面针对模拟操作电视机采用两种方式,一种为采用模拟遥控器的按键操作方式,一种为识别电视设备界面的控件方式。该步骤中主要是编写python自动化测试脚本,测试脚本由相应的模拟按键操作以及控件识别两种方式实现模拟行为,并动态等待页面响应,从而实现自动操作电视机。然后通过自动化测试终端,下发测试指令给电视机集群,针对待测电视设备及其应用服务进行测试。

步骤4:首先根据步骤2中搭建的测试环境,设置电视机集群的测试环境如步骤2所示,如某台电视机应用的测试环境设置为某个场景,在此场景上运行步骤3的测试脚本,并根据步骤3中的测试脚本编写模拟电视机按键操作,实现电视端的自动化操作。其在步骤2的独立可控的测试环境中通过步骤3中的测试脚本模拟电视键盘的操作,步骤4相当于测试环境是电视应用的预计输入内容,自动化测试操作后的数据反馈与测试环境中的数据进行一一比较验证。接下来的最重要的一步为测试结果验证,即电视应用在操作过程中的数据反馈的验证。该步骤主要是搭建python日志服务程序,日志服务器获取电视应用服务测试过程中的日志或接口数据并保存。继而编写python测试验证脚本,解析当前的日志或数据,并与预期结果分析比较,返回当前测试结果,最终,测试结束返回整体测试报告。

根据电视应用的自动化测试方法,其步骤1中,电视机集群的定义为:

电视机集群即为处于同一个局域网内部,单独的多台电视机组成的集群。每台电视机需搭载安卓操作系统(android)。集群的组成规则为:将n台电视机编号为1号,2号……n号,该电视机集群即由n台电视机组成,每台电视机拥有单独的编号,编号与电视机ip地址绑定,当通知1号电视机,实际上下发的adb命令是通过adb连接1号电视机的ip地址进行操作处理。以此类推。

自动化测试终端对待测试的电视机进行apk包安装。本发明测试的是电视应用,电视应用软件以apk包的形式需要安装至待测电视机。本发明中所指的apk包,指智能电视系统(该系统也是以apk包的形式安装至待测电视机),也可指单独的电视应用软件。

其步骤2中,搭建测试环境服务具体包括如下步骤:

步骤21:当前自动化测试业务针对搭建测试环境来说,一般由开发提供(基本都是同样的代码部署一套测试环境),并且无异常场景的搭建。但是本发明中的测试环境包括正常场景和异常场景,并且都是由测试人员通过测试用例设计后构造的测试场景进行搭建。本发明采用一种新的思维来搭建测试环境,即截获线上环境的请求根据测试需求返回不同的请求结果,从而模拟各种测试场景。

针对搭建测试环境(异常场景和正常场景)服务,本发明采用django框架,编写python服务程序,即用python语言实现截获线上环境的请求,并返回不同的请求结果的整个流程(其基本原理为:截获并解析线上请求接口的参数,模拟同一个接口不同的请求参数返回不同请求结果)。然后启动该服务程序,使外部通过端口访问,从而实现对外提供服务。

最终,python服务程序实现的测试环境如下描述所示,如同一个接口,请求参数为“直播”的时候,返回404。请求参数为“点播”,返回至线上请求,请求正常,依次类推。(测试环境如某部直播影片返回404错误,该直播影片无法正常播放,但是其他点播影片,仍然正常播放)。

步骤22:python程序服务只能通过端口访问,而本发明中则需要进一步搭建nginx服务器,通过nginx文件的配置,提供对外服务时将端口访问转为设置域名host,则外部可以直接配置域名host访问,不需要通过端口访问(如访问百度通过域名www.baidu.com,而不是xxx.xxx.xxx.xxx:8080这种访问形式)。

步骤23:通过以上步骤,本发明实现一套可供外部访问的测试环境,外部仅需进行host设置即可访问,同理类似,本发明可以实现多种独立的测试环境。然后自动化测试服务器通过下发adb命令至电视机集群,针对待测电视机配置相应的host文件,即为待测电视机设置相应的测试环境。测试环境类如:当电视应用服务访问某个域名,实际上访问的是测试环境的域名,但不影响其他域名,针对测试环境的同一个域名来说,仅影响被截获的接口,其他接口仍然访问至正常场景,进一步地,测试环境的同一个接口也仅影响被截获的参数的那个请求,不会影响其他请求。本步骤中,自动化测试服务器终端下发的adb命令至待测电视机,该命令为配置相应的host,或取消相应的host。即为待测电视机设置相应的测试环境,或取消测试环境。

根据电视应用的自动化测试方法,其步骤3中,具体包括如下步骤:

步骤31:本发明需要编写python自动化测试脚本,通过按键模拟操作与控件识别两种方式来实现模拟遥控器的行为的功能,从而实现自动操作电视机。本发明采用了appium自动化测试框架,基于该框架编写python自动化测试脚本实现电视应用的自动化测试。

本发明采用两种方式的原因在于:电视机搭载安卓操作系统(android),因而可以通过编写python脚本识别android系统的电视设备的界面的控件,从而操作控件,(类似于移动端的自动化测试),进而操作电视机。但是搭载安卓操作系统的电视机,并不是能够识别全部的控件,只能识别部分的控件,所以python脚本可以针对部分能够识别的控件进行操作,不能识别的控件依旧采用按键模拟操作的方式实现自动操作电视机。

按键模拟操作方法为:appium提供一套按键操作的api,该api实现向上、向下、翻页、唤起菜单键等操作。本发明编写的python脚本就是通过调用appium模拟按键操作的api,实现类似模拟电视机遥控器的操作行为,从而实现自动操作电视机。如python脚本模拟遥控器发送向上命令至待测电视机,电视机识别并响应向上按钮,这个过程即实现自动操作电视机。

控件识别方法为:appium提供一套控件识别的api,该api实现页面控件的识别与页面控件的操作(点击、输入)等操作。在此过程中,python脚本依旧通过调用appium的控件识别api,实现识别电视机页面的控件并操作其控件,电视机响应其操作,从而实现自动操作电视机。如python脚本识别电视机某个按钮控件并触发点击这个控件,电视机识别并响应对应的按钮控件,这个过程即实现自动操作电视机。

步骤32:进一步地,python自动化测试脚本的编写流程为,首先初始化业务参数,设置appium的基本参数,如其对应的测试ip地址为电视机的ip地址,测试系统为android系统等。其次,编写测试函数,测试函数内部主要包括模拟键盘发送内容(其为按键模拟操作与控件识别两种方式)和验证其电视响应反馈的页面元素是否正确。

为了在自动化测试过程中,更好的捕获其异常错误(如模拟键盘发送向上键,但其响应成向下键,类似异常错误等),测试函数里面采用python的异常处理机制,如try…except…else等,当存在异常的情况下,进入异常处理流程,否则,进入正常处理流程。如模拟键盘发送向上键,当其响应为向上键,则进入正常处理流程(继续后续操作),当其响应不为向上键(如其他任何异常错误),则进入异常处理流程(中断退出报错)。

测试函数实现某个业务的测试流程:其流程主要针对业务流程进行模拟操作,如针对电视应用的一次搜索行为,即测试函数会点击搜索按钮(模拟键盘发送),验证是否进入搜索页面(验证其页面反馈的元素,如正常则继续,异常则中断退出报错),针对搜索页面上面的输入框,输入某个参数进行搜索行为(模拟键盘发送),搜索成功后显示搜索结果(验证其页面反馈的元素,如正常则继续,异常则中断退出报错),点击当前搜索结果(模拟键盘发送),验证当前的搜索结果是否搜索正确(验证其页面反馈的元素,如正常则继续,异常则中断退出报错)。最后,结束当前业务,退出当前场景。如上所述,单个测试脚本完成。

步骤33:以上步骤中的python脚本发送命令给电视机,需要等待电视机响应,因此,python脚本在测试过程中,针对电视机页面的等待响应时间,采用动态等待机制,而非固定等待多少时间。这个机制,不但大大减少了测试时间,并已用来实现获取到单个页面的响应时间。

步骤34:python脚本通过按键模拟操作与控件识别两种方式,并采用动态等待机制实现及时处理响应后的页面。在以上步骤中,python自动化测试脚本已完全能够实现针对电视机的模拟操作。python自动化测试脚本完成后,后续将通过自动化测试服务器终端下发测试启动命令至待测电视机,电视机识别并响应python测试脚本的测试命令,执行测试流程。

进一步的,所述步骤4具体包括:

步骤41:首先根据步骤2中搭建的测试环境,设置电视机集群的测试环境如步骤2所示,如某台电视机应用的测试环境设置为某个场景,在此场景上运行步骤3的测试脚本,并根据步骤3中的测试脚本编写模拟电视机按键操作,实现电视端的自动化操作。其在步骤2的独立可控的测试环境中通过步骤3中的测试脚本模拟电视键盘的操作。

步骤42:针对电视应用在操作过程中的数据反馈的验证,一般采用的技术使用抓包软件,然后对抓包后的结果进行分析。但是抓包软件存在丢包的情况,并且在电视机内部安装抓包软件会影响其内部应用软件的测试。本发明采用的方法为搭建python日志服务程序,其程序搭建的原理为:截获日志请求接口,将全部的日志请求接口返回的数据存入日志服务器。其后续的对外服务流程与上述步骤2中的步骤22的提供对外服务流程一致。通过服务域名配置,本发明在电视应用服务的测试过程中,其产生的全部日志请求会自动保存至日志服务器。

步骤43:电视应用的自动化测试的最后一步为分析并验证测试结果。针对步骤41保留的日志,本发明编写python测试验证脚本,解析日志服务器的当前操作流程日志,并与预期结果分析比较,返回测试结果。如解析日志服务器的某条日志,其结果为15个参数,比较预期结果是否为15个参数,进一步比较日志中的每个参数与预期结果是否一致,如不一致,则返回失败。一致,则通过。最终,测试结束,返回当前流程或整体结果的测试报告。

下面结合附图和具体实施方式做进一步说明。参照图1,在同一个局域网内,需要电视机集群、自动化测试服务器、测试环境服务器、日志服务器,自动化测试服务器连接电视机集群,电视机集群内部配置并连接测试环境服务器以及日志服务器。

如图2,本发明方法包括如下步骤:

步骤1:在同一个局域网内,通过自动化测试终端上传电视应用或智能电视系统的apk安装包至电视机集群,并下发安装指令给电视机集群,自动化测试终端对待测的电视机(编号为1)进行apk包安装,由于电视机的编号与其ip地址绑定,自动化测试终端的下发apk连接与安装的指令为:adbconnectip,adbinstall-rxxx.apk。“adbconnectip”为连接编号为1的电视机,“adbinstall-r”为在当前电视机上强制安装覆盖当前某个apk安装包(此为智能操作系统或应用软件)。

步骤2:搭建测试环境服务,本发明采用django框架,编写python服务程序,程序编写的原理为:截获并解析线上请求接口的参数,模拟同一个接口不同的请求参数返回不同请求结果。即同一个接口,请求参数为“直播”的时候,返回404。请求参数为“点播”,返回至线上请求,请求正常,依次类推。(测试环境如某部直播影片返回404错误,该直播影片无法正常播放,但是其他点播影片,仍然正常播放),下例为截获当前post请求,并解析其中v参数,获取vid的值,当确认vid为某个值,返回当前参数请求接口的结果为404。同一个接口的其他参数请求仍然保持正常返回。

ifreq.method=='post':

v=req.post.get('v')

vjson=json.loads(v)

vid=str(vjson["v"]["id"])

ifvid==“xxxx”:

returnhttpresponsenotfound('<h1>pagenotfound</h1>')

else:

te=urllib.urlopen('http://xxx.xxx.com'+req.get_full_path())

returnhttpresponse(te.read(),content_type="application/xml")

然后搭建nginx服务器,通过nginx文件的配置,可以提供对外服务。其因为nginx可以配置将某个域名请求至本地的某个服务,从而提供对外服务时将端口访问转为设置域名host。

通过步骤2,本发明实现一套可供外部访问的测试环境,外部仅需进行host设置即可访问,同理类似,本发明可以实现多种独立的测试环境。然后自动化测试服务器通过下发adb命令至电视机集群,针对已选的电视机配置相应的host文件,电视机的应用服务请求将被截取,请求至当前的测试环境,从而实现各种场景(包括异常场景和正常场景)的模拟。自动化测试服务其下发的adb命令为:adbshellsu-c'mount-oremount,rw/system',adbshellsu-c'echo“x.x.x.xxxx.xxx.com”>>/system/etc/host',第一个命令为赋予当前/system目录读写权限,第二个命令为写入测试环境服务至系统host文件,如上命令将电视应用服务的环境配置为特定的测试环境(包括异常和正常)。以此类推,电视机集群的电视应用可分别一一配置不同的测试服务环境。

步骤3:编写python自动化测试脚本,测试脚本由相应的按键模拟操作以及控件识别组成,构成模拟电视机一系列的操作行为流程。本发明选择的自动化测试框架为appium。本发明的测试方法一为采用按键操作模拟电视机的遥控器操作行为,方法二为采用uiautomator定位并识别电视机的控件操作,在此过程中采用动态等待机制等待页面加载时间。

按键模拟操作方法为:电视机由遥控器操作,因此自动化测试脚本采用相应的按键操作命令模拟电视机的遥控器操作,appium的键盘处理命令包括:keycode_enter回车键66,keycode_dpad_center确定键23,keycode_dpad_up导航键向上19,keycode_dpad_down导航键向下20,keycode_dpad_left导航键向左21,keycode_dpad_right导航键向右22,keycode_page_up向上翻页键92,keycode_page_down向下翻页键93,等等,如模拟遥控器的确定键,其python语言的命令为:self.driver.press_keycode(23)。

控件识别方法为:uiautomator定位识别电视机的控件的方法主要分为以下几种,通过文本信息定位识别,其方法为find_element_by_name(),通过控件的classname定位识别,其方法为find_element_by_class_name(),通过xpath方法定位识别,其方法为find_element_by_xpath(),通过控件id定位识别,其方法为find_element_by_id(),通过androiduiautomator定位识别,其方法为find_element_by_android_uiautomator()等等。如识别某个控件并点击,其python语言的命令为:find_element_by_id(“someid”).click()

同时,电视机发送按键命令至其响应存在等待时间,脚本提供一个运行动态等待方式其命令为:element=webdriverwait(self.driver,5).until(lambdax:x.find_element_by_id('someid')),self.driver为webdriverwait的驱动程序,5为最长超时时间,until为调用该方法提供的驱动程序的参数,直到返回值不为false。lambda提供一个运行时动态创建函数的方法。其命令的含义为当控件someid在页面上超过5s不出现的情况下,报错。如5s内出现,则成功。

自动化测试服务终端,下发测试指令给电视机集群,通过上述步骤中的python脚本中的命令对待测电视设备及其应用服务进行测试。自动化测试服务其下发的adb命令为:adbconnectip,adbshellsu-c'pythontest.py',第一个命令为连接某台电视机,第二个命令为针对该电视机运行某个测试脚本,依次类推,自动化测试服务终端可以下发指令给众多独立的电视机,并分别执行不同测试场景下(异常场景和正常场景)的测试。

步骤4:根据步骤2中自动化测试服务下发的adb命令将电视机集群与测试环境分布对应后,然后针对每台电视机运行步骤3的测试脚本,其下发的adb命令如步骤3中所示,从而本发明实现其在步骤2的独立可控的测试环境中通过步骤3中的测试脚本模拟电视键盘的操作。在电视机自动化测试的整个过程中,采用python日志服务程序保存其应用服务的测试数据(测试日志或接口数据)。python日志服务程序搭建的原理为:截获日志请求接口,将全部的日志请求接口返回的数据存入日志服务器。其后续的对外服务流程与上述步骤2中的提供对外服务流程一致。通过服务域名配置,本发明在电视应用服务的测试过程中,其产生的全部日志请求会自动保存至日志服务器。

本发明编写python测试验证脚本,解析日志服务器的当前操作流程日志,并与预期结果分析比较,返回测试结果。如解析日志服务器的某条日志,其结果为15个参数,比较预期结果是否为15个参数,进一步比较日志中的每个参数与预期结果是否一致,如不一致,则返回失败。一致,则通过。最终,测试结束,返回当前流程或整体结果的测试报告。

自动化测试服务器终端下发指令进行电视应用的测试,其结束后,可展示当前的测试结果,并邮件发送测试结果至相关人员。

进一步地,本发明电视应用apk安装包指智能电视系统(如某品牌的自主智能电视系统),也可指单独的电视应用软件。

进一步地,测试环境服务包括异常场景和正常场景测试环境服务。

进一步地,键盘及控件操作包括点击、输入、唤起屏幕、选择以及拖拉操作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1