51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3076|回复: 3
打印 上一主题 下一主题

[原创] QTP取出页面中webtable数据,写出到Excel的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-2-28 11:19:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
应朋友要求,想把淘宝网店的交易的所有交易记录写到Excel里面

出现几个问题:
1、webtable对象使用webtable.rowcount,总是说只有一行,返回的总是1。但是直接这样遍历取值又取到了值
  for  i =1 to 16
   str=Brows("XXXX").page("XXX").WebTable("XXXX").GetCellData(i,1)
   msgbox str
   next
全部都能取到值。但是为什么webtable.rowcount就是1???????这样导致一个问题,我不能知道表格有多少行了,不能控制循环。
2、将取到的值写入到Excel里面,写入是写入进去了,但是过程中怎么产生了。temp文件,关闭了Excel之后仍然说temp文件被使用,不能删除。关QTP也删除不了,是不是大家写Excel都会产生temp文件?主要写Excel代码如下:
set xlsobj=createobject("excel.application")   '创建excel对象
set xlsbook=xlsobj.Workbooks.Open("C:\Documents and Settings\Administrator\桌面\Book1.xlsx")    ‘打开指定的excel文件
Set xlssheet=xlsbook.Sheets("sheet1")  ’设置操作sheet对象,可使用index-从1开始
xlssheet.cells(1,1)=1   ‘对第一列的第一行赋值
xlsbook.Save      ’保存excel文件  
xlsbook.Close   ‘关闭
创建,保存,关闭,统统都是放在写数据循环之外的。

3、翻页问题,淘宝的翻页到了最后一页后,下一页会置灰不能点击,用那个属性控制?怎么实现自动翻页操作??


想实践下的朋友可以找个随便的淘宝网店试一下。。。。。。求高手指教。。。。。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-3-15 20:48:19 | 只看该作者
解决过程其实没多少技术含量。。。。。。
1、关于问题1webtable.rowcount 取出来总是等于1,我没有管它,因为循环能取到表格下面的所有值。
关键是如何控制循环次数,列表数据总共有16行,直接写死,不用count。
2、关于翻页问题,最后一页时候会边灰,尝试过两个属性,运行时根本没有。解决方法是干脆从页面上获取有多少页,把页面上的webelement的innertext属性取出来,注意使用正则匹配,保证不同的页数也能取值,切割字符串,得到多少页。
3、控制循环,外层循环由页数控制,内层循环写死。
4、关于最后一页数据条数不确定怎么办。。。,,,这样处理:当QTP调用函数GetCellData(i,1)时,不存在值没有这一行时,会返回"ERROR: The specified cell does not exist." ,用这个字符来判断退出循环。
5、操作excel产生临时文件是因为没有释放用户,这么一句:xlsobj.Quit。连续的在excel里面写翻页数据行数就是内、外循环变量相加。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-4-16 21:09
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2012-3-14 23:26:54 | 只看该作者
    代码贴得不错,教育意义不是很大,更希望看到分析过程。

    解决问题的思路才是关键,代码仅仅是一种体现形式而已。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
     楼主| 发表于 2012-2-28 23:42:42 | 只看该作者
    本帖最后由 wower1985 于 2012-3-15 20:49 编辑

    回复 1# wower1985


        算了,没人鸟,全部内容自己想办法解决了。附上全部代码。


    '使用前最好关闭浏览器,先开QTP
    Set IEBrowser = CreateObject("InternetExplorer.Application")
    IEBrowser.Visible = True
    IEBrowser.Navigate  "http://zx.taobao.com/detail.htm?id=11204926"   '导航到的URL,换别的地址就行
    '换别的地址要注意该这里的Browse title 名字和page title名字,只统计你们的模版市场不需要改
    set myPage=Browser("micclass:=Browser","title:=.*模板详情 - 店铺装修市场 – 淘宝网").Page("micclass:=Page","title:=.*模板详情 - 店铺装修市场 – 淘宝网")
    '等待页面加载
    myPage.Sync
    '点击成交记录
    myPage.WebElement("micclass:=WebElement","innertext:=成交记录").Click
    '获得多少页记录
    pageText=myPage.WebElement("micclass:=WebElement","innertext:=.*共.*条 / 共 .* 页").GetROProperty("innertext")
    startIndex=InStr(pageText,"/ 共")+3
    endIndex=InStr(pageText,"页")-1
    l=endIndex-startIndex
    pageStr=trim (mid(pageText,startIndex,l))
    pageNum=Cint(pageStr)
    'msgbox  pageNum
    myPage.WebTable("micclass:=WebTable","html tag:=TABLE","column names:=买家;出价;成交时间;状态").Click
    '开始写入到Excel,先创建excel文件,地址放对。
    set xlsobj=createobject("excel.application")   '创建excel对象
    set xlsbook=xlsobj.Workbooks.Open("C:\Users\Administrator\Desktop\book1.xlsx")    '打开指定的excel文件
    Set xlssheet=xlsbook.Sheets("sheet1")  '设置操作sheet对象,可使用index-从1开始
    '设置表头
    xlssheet.cells(1,1)="买家"
    xlssheet.cells(1,2)="出价"  
    xlssheet.cells(1,3)="成交时间"   
    xlssheet.cells(1,4)="状态"
    '读取内容部分
    k=0
    j=0
    Do while j< pageNum
    For  i=1 to 15
    '判断是否有值
    a=  myPage.WebTable("micclass:=WebTable","html tag:=TABLE","column names:=买家;出价;成交时间;状态").GetCellData(i+1,1)

    If  a="ERROR: The specified cell does not exist."  Then
      Exit for
      Exit Do
    End If
    'a=  myPage.WebTable("micclass:=WebTable","html tag:=TABLE","column names:=买家;出价;成交时间;状态").GetCellData(i+1,1)
    b=  myPage.WebTable("micclass:=WebTable","html tag:=TABLE","column names:=买家;出价;成交时间;状态").GetCellData(i+1,2)
    c=  myPage.WebTable("micclass:=WebTable","html tag:=TABLE","column names:=买家;出价;成交时间;状态").GetCellData(i+1,3)
    d=  myPage.WebTable("micclass:=WebTable","html tag:=TABLE","column names:=买家;出价;成交时间;状态").GetCellData(i+1,4)
    xlssheet.cells(i+k+1,1)=a
    xlssheet.cells(i+k+1,2)=b  
    xlssheet.cells(i+k+1,3)=c   
    xlssheet.cells(i+k+1,4)=d
    Next
    k=k+15
    j=j+1
           If  j=pageNum    Then
         Exit Do
           End If
    myPage.Link("micclass:=Link","name:=下一页").Click
    Loop
    '关闭Excel
    xlsbook.Save   
    xlsbook.Close  
    xlsobj.Quit
    set xlssheet=nothing
    set xlsbook=nothing
    set xlsobj=nothing
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-23 22:26 , Processed in 0.087501 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表