发布新日志

  • 依次勾选复选框,并进行修改的函数

    2007-11-20 18:26:32

    Function Get_Ran(i)
       Randomize
      Get_Ran=RandomNumber (0,i)
    End Function

    Function chsnext(brws,page,frame,webtb,webtn)
    Dim rows,i,j,pages,pagecount
    set ōbjtb=Browser(brws).Page(page).Frame(frame).WebTable(webtb)
    rows=cint(objtb.rowcount)   
    pages=objtb.getcelldata(rows,1)
    pagecount=cint(mid(pages,9,1))
    For j=1  to pagecount
     If j>=2  Then
                   Browser(brws).Page(page).Frame(frame).WebEdit("pageno").Set j
                   Browser(brws).Page(page).Frame(frame).WebButton("跳转").Click
          rows=Browser(brws).Page(page).Frame(frame).WebTable(webtb).rowcount         
            else
                  rows=Browser(brws).Page(page).Frame(frame).WebTable(webtb).rowcount
            End If 
    For i=2  to rows-1
    set ōbjcb=Browser(brws).Page(page).Frame(frame).WebTable(webtb).childitem(i,1,"WebCheckBox",0)
    objcb.Set "ON"
    Dim k,n
    k=Get_Ran(4)
    Browser(brws).Page(page).Frame(frame).WebButton("修改").Click
    Browser(brws).Page(page).Frame(frame).WebEdit("PROD_SERVICE/SERVICE_CODE").Click
    n=Get_Ran(2000)
    Browser(brws).Page(page).Frame(frame).WebEdit("PROD_SERVICE/SERVICE_CODE").Set  i&n
    Browser(brws).Page(page).Frame(frame).WebList("PROD_SERVICE/SERVICE_TITLE_COD").Select "#"&k
    Browser(brws).Page(page).Frame(frame).WebButton("提交").Click
    Browser(brws).Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Next
    Next
    End Function

    chsnext "xxx系统登陆","xxx系统","result","服务编码","下页"

    其中:set ōbjcb=Browser(brws).Page(page).Frame(frame).WebCheckBox("index:="&i-1)
    这句也可以用childitem的方法,脚本如下:
    set ōbjcb=Browser(brws).Page(page).Frame(frame).WebTable(webtb).childitem(i,1,"WebCheckBox",0)

    用描述性编程的方法也可以依次勾选复选框,脚本如下:
    Dim objckb,objwcb,i,objcb,objwle,num,text,j
    Set ōbjckb=descrīption.Create
    objckb("micclass").value = "WebCheckBox"
    set ōbjwcb=Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("result_22").Childobjects(objckb)
    set ōbjwle=Browser("NYBOSS系统登陆").Page("nyboss系统").Frame("result").WebTable("服务编码")
    num=cint(objwle.rowcount)
    set ōbjwle=objwle.childitem(num,1,"WebElement",0)
    text=objwle.getroproperty("innertext")
    pages=cint(mid(text,9,1))
    For j=1 to pages
        If j>=2  Then
          Browser("NYBOSS系统登陆").Page("nyboss系统").Frame("result").WebButton("下页").Click 
     End If
    For i=1 to objwcb.count-1
    set ōbjcb=Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("result_22").Childobjects(objckb)
    objcb(i).Set "ON"
    Next
    Next

  • 根据webtable中某个cell的数据勾选前面的复选框

    2007-11-16 14:36:42

     

    set ōbjtb=Browser("Browser").Page("page").Frame("frame").WebTable("用户编码")
    For i=2 to int(objtb.rowcount)
    If objtb.GetCellData(i,4)=555100611    Then
    set ōbjcb=objtb.childitem(i,1,"WebCheckBox",0)
    objcb.Set "ON"
    end if
    Next

    其中555100611是webtable中某行第4列的数据。

    如果某个cell内的数据是字符串,则用下面的语句判断:

    If trim(objwb.GetCellData(i,3))="无设备包年"   Then

     

  • 随机选择webtable中的某一个复选框

    2007-11-16 14:09:55

    首先通过add object添加WebTable对象(如果没有录到)

    set ōbjtb=Browser("Browser").Page("page").Frame("frame").WebTable("用户编码")
    randomize
    i=Rnd*int(objtb.rowcount)
    set ōbjcb=objtb.childitem(i,1,"WebCheckBox",0)
    objcb.Set "ON"

  • 如何点选webtable中需要的某一行

    2007-11-13 10:43:02


    function  finddata(brws,page,frame,webtb,text,webelm,link)
    Dim  i,rows,k,pageno,m,pages,pagecount
    set ōbjs=Browser(brws).Page(page).Frame(frame).WebTable(webtb)
    rows=objs.rowcount
    pages=objs.getcelldata(rows-1,1)
    If    mid(pages,4,1)<>"条"  Then
           pageno=cint(mid(pages,8,1))
        pagecount=cint(mid(pages,12,1))
        else
        pageno=cint(mid(pages,7,1))
        pagecount=cint(mid(pages,11,1))
    End If
    found=false
    For m=1 to pagecount
            For i=1 to rows
            If trim(objs.getcelldata(i,1))=text  Then
            set ōbj=Browser(brws).Page(page).Frame(frame).WebElement("name:="&webelm,"innertext:="&text)
            obj.click
      found=true
         Exit for
            End If
            next    
       if  m=2  and found=false Then
                  If pageno=1  Then
                  Browser(brws).Page(page).Frame(frame).Link(link).Click
          rowno=objs.rowcount
         elseif  pageno=2 then
               rowno=objs.rowcount
            End If
        For i=1 to rowno
                 If trim(objs.getcelldata(i,1))=text  Then
                    set ōbj=Browser(brws).Page(page).Frame(frame).WebElement("name:="&webelm,"innertext:="&text)
              obj.click
         found=true
              Exit for
               end if
              Next
        end if       
    Next
    end function

    finddata "xxx管理系统","xxx管理系统","main","节目名称","test","增加","下一页"

  • 怎样实现翻页勾选需要的复选框

    2007-11-08 18:30:24

    翻页勾选复选框
    Function  findtext(bws,page,frame,wbtable,text)
    Dim  i,rows,pages,m,pagen,pageno,found,j
    set ōbjs=Browser(bws).Page(page).Frame(frame).WebTable(wbtable)
    rows=Browser(bws).Page(page).Frame(frame).WebTable(wbtable).rowcount
    pagen=objs.childitem(rows-1,1,"WebElement",0).getroproperty("innertext")
    pageno=cint(mid(pagen,1,1))
    pages=Cint(mid(pagen,4,1))
    found=false
    For m=1 to pages
     If  m=1  Then
             If pageno=1  Then
              rowno=Browser(bws).Page(page).Frame(frame).WebTable(wbtable).rowcount
       elseif  pageno=2 then
       Browser(bws).Page(page).Frame(frame).WebButton("上页").Click
             rowno=Browser(bws).Page(page).Frame(frame).WebTable(wbtable).rowcount
          End If
            For i=1 to rowno
             If  trim(objs.getcelldata(i,2))=text then  
        set ōbj= Browser(bws).Page(page).Frame(frame).WebCheckBox("index:="&i-1)
        obj.Set "ON"
        found=true
         Exit for
           end if
           Next
        End If
           if  m=2  and found=false Then
                  If pageno=1  Then   
                  Browser(bws).Page(page).Frame(frame).WebButton("下页").Click
        rowno=Browser(bws).Page(page).Frame(frame).WebTable(wbtable).rowcount
       elseif  pageno=2  then
            rowno=Browser(bws).Page(page).Frame(frame).WebTable(wbtable).rowcount
       End If
                For i=1 to rowno
               If  trim(objs.getcelldata(i,2))=text then    
         set ōbj= Browser(bws).Page(page).Frame(frame).WebCheckBox("index:="&i-1)
           obj.Set "ON"
            Exit for
              end if
              Next
        end if       
    Next
    End Function

    findtext "nyboss系统","nyboss系统","resultiframe","用户编码",usrcode

  • 代替检查点的一种方法

    2007-11-07 15:16:35

    当用描述性编程的方法时,或者要判断某个对象属性的一部分时,checkpoint就不好用了,下面是一种

    代替设置检查点的一种方法,脚本如下:

    Dim  i
    set ōbjs=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebTable("产品编码")
    i = 1
    while not trim(objs.getcelldata(i,3))= "同方IC卡"
     i = i + 1
    Wend

    Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebCheckBox("index:="& i-1).Set "ON"
    chkpoint=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebCheckBox("index:="& i-1).getroproperty("value")
    If   instr(chkpoint,"同方IC卡")<>0 Then
     reporter.reportevent 0, "同方IC卡", "找到了同方IC卡"
        else
      reporter.reportevent 1, "同方IC卡", "没找到同方IC卡"
    End If

  • TD 8.2移植

    2007-11-07 10:04:10

    第一次把该覆盖的文件都覆盖后,发现project directory的路径中始终是以前服务器的名字,终于找到了该路径的方法,具体移植过程如下:

    本文档目的:将服务器server1上的TD8.0下的项目移植到服务器server2上的TD8.0上
    本文档项目实现环境:
    工具:TD8.0
    数据库:sql server2000
    操作系统:win2000 sp4
    本文档约定:Server1上TD8.0下的相关环境如下:
          服务器名:server1
          数据库:Sql Server2000
          被移植项目:zb_test
          项目所在域:zb_tb
          项目在sql中的数据库名字:zb_tb_zb_test_db
          项目所在目录:c:\TD_DIR\zb_td\zb_test
    Server2上TD8.0下的相关环境:
          服务器名:server2
          数据库:Sql Server2000
          现有项目:新配置服务器,尚未建立项目
          现有在域:已经建立域zb_tb(与server1上域名一致)
          项目在sql中的数据库名字:尚未移植数据库
          项目所在目录:c:\TD_DIR\zb_td\
    关于TD8.0的项目文件存放说明:
    TD8.0的项目文件存储两个地方:
    1、安装TD时建立的目录C:\TD_DIR,
      本目录安装时默认在C盘,如果你在安装时修改了路径及文件夹名字,请以实际情况为准。
      该目录说明如下:
       该目录包含第一级文件夹 
            _scrīpts (该文件夹用途不明)
            Default (该文件夹为系统示例项目的域)
            ZB_TD (该文件加为用户自己建立的于)
         ……    (第一级文件夹为域文件夹)
    在各级域文件夹下为具体的项目文件夹:
            Default\ Demo_DB_0 (系统示例项目)                                           
           ZB_TD\ zb_test   (本次移植项目)
            ……     (第二级文件夹为项目文件夹) 
    2、数据库。
    本文档为sqlserver2000数据库存储,在sqlserver的企业管理器中可找到相应项目的对应的数据库。系统默认建立的数据库名字为:域名+项目名+db,本文档移植数据库为:zb_tb_zb_test_db
    项目移植需要移植的文件:

    1、C:\TD_DIR下的域文件夹及其子文件夹(项目文件夹)。建议将_scrīpts也复制过去,Default为示例项目,示例项目数据库为access,这里不做移植。
    2、数据库文件。需要在sqlserver的企业管理器中将数据库分离或备份,然后附加或还原到新服务器server2的sqlserver下。
    移植步骤:

    假设:server2上已经装好了TD8.0,已经按server1上的域创建了需要的。
    操作步骤:
    1、在server1使用管理员用户(admin)登录进入TD的 site adminstratir模块
    2、选择将要移植的项目,这里选择zb_td域下的zb_test项目
    3、右键选择‘Deactivate project’,将选中项目(zb_test)设置为‘不活动状态’,(图标右边变红)
    4、右键选择‘Remove project’,将选中项目(zb_test)从TD中移除(放心,这里非删除,但是切勿选择‘Delete       project’,否则项目将被彻底删除)
    5、将server1上C:\TD_DIR下的文件夹‘_scrīpts’和除了Default之外的其他文件夹,复制到server2上的C:\TD_DIR下(不要修改文件夹的名字),覆盖server2上的文件夹
    6、将server1上sqlserver2000中的项目数据库分离或者备份,然后将数据库文件或者备份文件复制到server2的数据库目录下,附加或者还原到server2的sqlserver2000上(注意不要修改数据库的名字,比如原来数据库在server1上叫zb_tb_zb_test_db,附加或者还原到server2上还叫zb_tb_zb_test_db)
    7、修改项目配置文件。配置文件位于每个C:\TD_DIR每个项目的文件夹下,名字叫Dbid.ini。   
    比如本文档描述项目该文件在:C:\TD_DIR\ZB_TD\ZB_TEST\Dbid.ini.
    该文件内容如下:
    [General]
    Database_Type=MSSQL                     //表示项目数据库类型为sqlserver
    Created_Date=11/07/07 01:06:31         //数据库创建时间
    Created_By=td                                   //数据库为td创建
    AliasName=zb_test                             //项目名称
    Database Name=zb_td_zb_test_db        //sqlserver2000中项目数据库的名字
    Database Server=server1                     //数据库所在服务器的机器名
    Domain Name=ZB_TD                        //项目所在的域名

    SendAllQualified=N
    Has_VCS_DB=N


    本文档移植项目需要改动的地方。Database Server=server2 。
    如果你按前面描述操作没有修改数据库名字和C:\TD_DIR下文件夹的名字,只修改该处即可。否则按上面的说明对应你修改内容修改相应的配置。
    8、在server2使用管理员用户(admin)登录进入TD的 site adminstratir模块
    9、点击‘Restore project’按钮 。
    10、出现一下 窗口。在Restore Into Domain 中选择要移植的域,然后点击‘DBID.INI file Iocation’后的连个点,\\server2\TD_DIR\ZB_TD\ZB_TEST\DBID.INI
    (注意:该路径只能为网络路径,即使在本机上也需要输入网络路径格式,选择时可通过网上邻居选择本机的共享目录:TD_DIR)

    11、路径和文件选择正确后将出现下面界面:
    12、选择Restore,成功后返回界面如下:
    13、此时项目已经添加进来,处于未激活状态          
    14、右键选择‘Activate’,激活后完成移植。
    完成后如图,经测试原数据和汉化字段,设定的流程都不受影响,可正常使用。

    经验证,用access数据库同样可以移植成功。

     

  • 怎样用描述性编程的方法勾选复选框?

    2007-11-07 09:47:12

    根据webtable中的某个数据,勾选所在行前面的复选框,可用描述性编程的方法实现,脚本如下:

    Dim searchFlag,searchStr,i,j,num,obj,webobj,webtbl
    Set webtbl=descrīption.Create
    webtbl("micclass").value="WebTable"
    set webobj=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").ChildObjects(webtbl)
    num=webobj.count
    searchStr = "同方IC卡"
    searchFlag = False

    For j=0 to num-1
            Set ōbj=webobj(j)
            searchFlag = False
            For i = 1 to obj.RowCount
                    If trim(obj.getcelldata(i,3))=searchStr Then
                            searchFlag = True
                    Exit for
            End If
            Next
            If searchFlag=True Then
                    Exit For
            End If
    Next

    If searchFlag=True Then
        Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebCheckBox("index:="&i-1).Set "ON"
    Else
            msgbox searchStr & " has not found."
    End If

  • 怎样把Excel表格中的数据依次读入到QTP中?

    2007-11-05 16:28:17

    可使用如下方法:

    Dim i,rows
    DataTable.ImportSheet "E:\temp\UU_No.xls","UU","Global"
    i=0
    rows=datatable.GetSheet("Global").GetRowCount
    Do while i<rows
    i=i+1
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebEdit("SYS_CONTROL_PARAMETER/UU_START").Click
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebEdit("SYS_CONTROL_PARAMETER/UU_START").Set DataTable("StartNo", dtGlobalSheet)
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebEdit("SYS_CONTROL_PARAMETER/UU_END").Click
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebEdit("SYS_CONTROL_PARAMETER/UU_END").Set DataTable("EndNo", dtGlobalSheet)
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebEdit("SYS_CONTROL_PARAMETER/UU_GRADE").Click
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebEdit("SYS_CONTROL_PARAMETER/UU_GRADE").Set "100"
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody").WebButton("处理").Click
    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody_2").WebButton("确定").Click
    datatable.getsheet("Global")
    datatable.setcurrentrow(i)

    loop

  • 执行脚本前怎样关闭所有的ie窗口,再打开被测系统的地址?

    2007-11-05 16:27:25

    systemutil.CloseProcessByName("iexplore.exe")

    SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","",""

    Browser("NYBOSS系统登陆").Page("NYBOSS系统登陆").Sync

    Browser("NYBOSS系统登陆").Navigate http://10.1.1.200:8090/boss/page/login.jsp

  • QTP8.2中调用VB函数的问题

    2007-11-05 16:25:57

    程序开头加上ExecuteFile "C:\libs.vbs"
  • 如何根据webtable中某个表格的内容勾选所在行复选框?

    2007-11-05 16:24:17

    如果没有录制到webtable对象,可以用add object的方法,先添加该对象,然后增加下面的脚本:

    Dim  i

    set ōbjs=Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebTable("产品编码")

    i = 2

    while not trim(objs.getcelldata(i,3))= "同方IC卡"

    i = i + 1

    Wend

    Browser("NYBOSS系统登陆").Window("-- 网页对话框").Page("产品选择").Frame("result").WebCheckBox("index:="& i-1).Set "ON"

    注: 用do while...loop的方法一样可以实现。而且webtable里的内容录制下来结尾有空格,故要用trim去掉空格,才能找到webtable里的数据。

     

     

  • 如何从Glogal或Local表中取数并放到文本框中?然后把取到的数放到另一个文本框中?

    2007-11-05 16:17:42

    用DataTable,GetRoProperty, 附值等方法。脚本如下:

    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody_7").WebEdit("inputInfo/ic/icNo").Set DataTable("ICCARD_NO", dtGlobalSheet)

    code=Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody_7").WebEdit("inputInfo/ic/icNo").GetRoProperty("value")

    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody_8").WebEdit("EQU_VD_BIND/ICCARD_NO/criteria").Click

    Browser("NYBOSS系统登陆").Page("NYBOSS系统").Frame("mainbody_8").WebEdit("EQU_VD_BIND/ICCARD_NO/criteria").Set code
  • 为何QTP与TD连接总是失败?

    2007-11-05 16:16:30

    原来是因为TD的端口号不用默认的80,而是改成了:6000,所以连接时server应输入:

    http://10.1.1.199:6000/tdbin, 然后点击connect,就可以成功了。

    连接成功后,以前Tools>Options>Run 下的submit a defect to quality center for each failed step也从原来灰的变为可以选择了!

    也有可能是防火墙不能自动识别QTP和TD程序,可以手动添加三个程序,即可:D:\Program Files\Mercury Interactive\QuickTest Professional\bin\QTPro.exe,  D:\Program Files\Mercury Interactive\QuickTest Professional\bin\TDReport.exe, C:\Program Files\Common Files\Mercury Interactive\TD2000_80\wexectrl.exe

  • 为什么装了QTP以后,总是不能录制脚本

    2007-11-05 16:15:18

     问题起因:
    在安装QTP后,或者禁用IE浏览器里的一些ActiveX控件后,正常录制QTP事,不能产生相应的录制脚本,脚本内容为空。
    解决方法:根据实践,我发现QTP在IE中录制脚本是依靠一个叫BHOManager Class的动态链接库来完成的。当这个控件没有被加载,或者被禁用时,就会出现上述症状。于是,解决方法就很简单了,重新加载,或启用这个控件,一切就OK啦。

    具体步骤:
    打开IE,在菜单中选择[工具]/[Internet选项]进入Internet配置界面。选择[程序]/[管理加载项],查看目前加载的ActiveX的情况。
    当看到存在BHOManager Class并且其状态是“禁用”时,点击“启用”开启这个功能,并保存后退出即可解决问题。
    当在管理加载项里找不到BHOManger Class这个加载项时,如果你安装了QTP,那么在C:\WINDOWS\system32下会存在一个叫BHOManager.dll的动态链接库,或者可以直接在计算机里搜索BHOManager.dll,然后查看其路径。加载这个dll,加载方法为:点击[开始]/[运行],输入cmd,然后定位到dll所在目录,键入regsvr32 BHOManager.dll命令,即可注册此dll。问题解决。

    我遇到的是在管理加载项里找不到BHOManger Class这个加载项,cmd, cd\, c:\windows\systems32\regsvr32 BHOManager.dll回车后,就成功加载了,重新录制,搞定。

  • 回放时下拉框无法识别

    2007-11-05 16:13:21

    第一种方法:用属性描述的方式,脚本如下所示:

    Browser("NYBOSS系统").Page("NYBOSS系统").Frame("result").WebList("name:=MOVEDEVICE/SUBSCRIBER_ID","html tag:=SELECT").Click

    Dim codes

    codes=randomnumber(0,1)

    Browser("NYBOSS系统").Page("NYBOSS系统").Frame("result").WebList("name:=MOVEDEVICE/SUBSCRIBER_ID","html tag:=SELECT").Select "#"&codes

    第二种方法:在Web Event里把WebList的onclick,onblur,onchange,onfocus 加上,enabled即可。
  • 怎样把Action1中的输出值作为参数传递给Action2中的输入值?

    2007-11-05 14:34:42

    a. 在Action1中选取要输出的文字:在Activer Srcreen中,框选住作为输出值的文字,点右键,点insert text output,点Modify,修改作为输出参数的名字,点OK。

    b. 在KeyView中,点Action1,点右键,点Action Properties,在onput parameter中点+,增加一行,并在name中输入输出值的参数名字。

    c. 在KeyView中,点Action2,点右键,点Action Properties,在input parameter中点+,增加一行,并在name中输入输出值的参数名字。

    d. 把Action2中需要替换参数的数据用参数替换,选择Action Parameter, Name选输出值参数的名字,点ok。

    e. 把该参数列在Global中,以便调用。

  • 计算错误的解决方法

    2007-11-05 14:28:47

    由于QTP录制动作很快,金额输入后,找零的金额不会自动算出,同样需要输入应收金额后按回车,找零才会正

    确,增加脚本如下:

    Browser("NYBOSS系统登陆").Page("中广温州有线BOSS系统").Frame("result_5").WebEdit("BILL_CHECKOUT/ACT_BILL_FEE").FireEvent("onfocus")

    set WshShell =CreateObject("Wscrīpt.Shell")

    WshShell.SendKeys "{ENTER}"
  • 回放不能自动关闭浏览器,导致重复回放失败

    2007-11-05 14:26:59

    录制时直接关闭浏览器,或者在脚本的最后加上:

    Browser("WZBOSS系统登陆").Close
  • 回车键录制不了的解决方法

    2007-11-05 14:20:38

    在Set "x"语句后面增加以下脚本,即可:

    Browser("WZBOSS系统登陆").Page("中广温州有线BOSS系统").Frame("result").WebEdit("SUB_SUBSCRIBER/BLOCK_NAME").Set "x"

    Browser("WZBOSS系统登陆").Page("中广温州有线BOSS系统").Frame("result").WebEdit("SUB_SUBSCRIBER/BLOCK_NAME").FireEvent("onfocus")

    set WshShell =CreateObject("Wscrīpt.Shell")

    WshShell.SendKeys "{ENTER}"

数据统计

  • 访问量: 7539
  • 日志数: 21
  • 建立时间: 2007-09-09
  • 更新时间: 2007-11-20

RSS订阅

Open Toolbar