QTP 行数和列数始终为 1
QTP row and column count is always 1
我正在编写一段代码,将数据从网络 table 复制到 excel sheet。我不明白为什么我的行数和列数都为 1。我还需要添加其他内容吗?
这是我的代码:
Dim XL
Set XL=createobject("Excel.Application")
XL.Workbooks.Open "D:\QTP\RailwaysforSurat.xlsx"
Set nsheet = XL.Sheets.Item(1)
row=Browser("title:=.*").Page("title:=.*").WebTable("html tag:=TABLE", "index:=0").GetROProperty("rows")
msgbox row
cols=Browser("title:=.*").Page("title:=.*").WebTable("html tag:=TABLE", "index:=1").GetROProperty("cols")
msgbox cols
这不是完整的代码。我无法计算行数和列数。请帮忙!
P.S。我正在使用此网站进行测试“http://www.indianrail.gov.in/cgi_bin/inet_trnnum_cgi.cgi”
indianrail 页面没有打开,所以无法看到您正在测试的table。但是QTP为行和列提供了默认方法,尝试使用它,看看它是否有效。
NumRows = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlights").RowCount
NumColumns = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlights").ColumnCount(1)
ColumnCount takes row number as parameter
我注意到您正在使用描述性编程技术来识别 WebTable,但您对所有内容都使用了极其通用的描述。也许这只是为了公开发布而被删除,但我注意到的重要一点是,您读取 Rows 的代码试图找到索引为 0 的 table 而您读取 Cols 的代码试图找到一个table 索引为 1...
这意味着您正在访问两个不同的 table。您确定您的描述找到了您认为想要的 table 吗?
我的建议是:
1) 在浏览器中调出页面,以便您可以看到 table。
2)调出QTP并打开GuiSPY
3) 单击立方体按钮上的指向手开始监视
4) 单击您要使用的 table 中的内容。
GuiSPY 将快速返回并显示它找到的对象的层次结构。接下来,您想确定该层次结构中的哪个级别是 table 在...我会...
5) 从顶部(浏览器)开始,select 顶行并单击 "Highlight in Application" 并观察点亮的内容。
6) 在层次结构列表中向下单击层次结构中的下一个项目,然后单击 "Highlight in Application",直到您看到它在您尝试定位的确切 table 上闪烁。
7) 隔离 table 后,单击 "Copy the identification properties to the clipboard" 按钮,然后关闭 GuiSPY。
8) 打开一个记事本,或者只使用 QTP 的编辑器 window 本身并粘贴 GuiSPY 复制到剪贴板的内容。
好的,您现在拥有 QTP 能够看到的关于您要检测的特定 table 的所有内容的完整列表。从这里开始,您想浏览属性列表并找到一个(或两个)每次都能肯定地识别 table 的属性。例如,在这个页面上, table 包含您的问题可以确定为:
WebTable("text:=I am writing a piece of code to copy data")...(*请注意,我已将其缩减,因为它自动成为一个 Regex 字符串...经过一些清理,它可能是:
Browser("whosebug.com").Page("Question 36663629").WebTable("text:=I am writing a piece of code to copy data"))
现在将您的 .WebTable("html tag:=TABLE", "index:=0") 替换为您 select 编辑的数据,然后重试。希望您可以准确地锁定 table 您所期望的并获得您需要的信息。
不确定您正在查看的 table 是什么,但如果它是服务和信息,那么 table 的 rows/cols 值是 1.The 整个网页由串联的网络 table 组成。因此,捕获这些信息并不难。尝试使用子对象方法并计算网络 table 中 link 的数量,它看起来像这样 -
Set oWebEdit=Description.Create
oWebLink("micclass").value="Link"
Set olink = Browser("title:=.*").Page("title:=.*").WebTable("").childobjects(oWebLink)
olink.count
msgbox olink.count
'然后发起一个for循环
For i = 0 to olink.count-1
' 获取 link 名称
olink. count(i).GetRoproperty("name")
'初始化数组并保存link个名字
如果 get link name 不起作用,那么您可以使用 childitem 方法。
还要确保您为 table 使用了正确的索引,或者也定义了一些其他属性。
P.S。如果您将来打算使用 DP 但尚未使用,那么阅读有关 Childitems/childobjects methods.They 的内容会在使用 DP 时派上用场。
我正在编写一段代码,将数据从网络 table 复制到 excel sheet。我不明白为什么我的行数和列数都为 1。我还需要添加其他内容吗?
这是我的代码:
Dim XL
Set XL=createobject("Excel.Application")
XL.Workbooks.Open "D:\QTP\RailwaysforSurat.xlsx"
Set nsheet = XL.Sheets.Item(1)
row=Browser("title:=.*").Page("title:=.*").WebTable("html tag:=TABLE", "index:=0").GetROProperty("rows")
msgbox row
cols=Browser("title:=.*").Page("title:=.*").WebTable("html tag:=TABLE", "index:=1").GetROProperty("cols")
msgbox cols
这不是完整的代码。我无法计算行数和列数。请帮忙!
P.S。我正在使用此网站进行测试“http://www.indianrail.gov.in/cgi_bin/inet_trnnum_cgi.cgi”
indianrail 页面没有打开,所以无法看到您正在测试的table。但是QTP为行和列提供了默认方法,尝试使用它,看看它是否有效。
NumRows = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlights").RowCount
NumColumns = Browser("Mercury Tours").Page("Search Results").WebTable("OutboundFlights").ColumnCount(1)
ColumnCount takes row number as parameter
我注意到您正在使用描述性编程技术来识别 WebTable,但您对所有内容都使用了极其通用的描述。也许这只是为了公开发布而被删除,但我注意到的重要一点是,您读取 Rows 的代码试图找到索引为 0 的 table 而您读取 Cols 的代码试图找到一个table 索引为 1...
这意味着您正在访问两个不同的 table。您确定您的描述找到了您认为想要的 table 吗?
我的建议是:
1) 在浏览器中调出页面,以便您可以看到 table。 2)调出QTP并打开GuiSPY 3) 单击立方体按钮上的指向手开始监视 4) 单击您要使用的 table 中的内容。
GuiSPY 将快速返回并显示它找到的对象的层次结构。接下来,您想确定该层次结构中的哪个级别是 table 在...我会...
5) 从顶部(浏览器)开始,select 顶行并单击 "Highlight in Application" 并观察点亮的内容。 6) 在层次结构列表中向下单击层次结构中的下一个项目,然后单击 "Highlight in Application",直到您看到它在您尝试定位的确切 table 上闪烁。 7) 隔离 table 后,单击 "Copy the identification properties to the clipboard" 按钮,然后关闭 GuiSPY。 8) 打开一个记事本,或者只使用 QTP 的编辑器 window 本身并粘贴 GuiSPY 复制到剪贴板的内容。
好的,您现在拥有 QTP 能够看到的关于您要检测的特定 table 的所有内容的完整列表。从这里开始,您想浏览属性列表并找到一个(或两个)每次都能肯定地识别 table 的属性。例如,在这个页面上, table 包含您的问题可以确定为: WebTable("text:=I am writing a piece of code to copy data")...(*请注意,我已将其缩减,因为它自动成为一个 Regex 字符串...经过一些清理,它可能是:
Browser("whosebug.com").Page("Question 36663629").WebTable("text:=I am writing a piece of code to copy data"))
现在将您的 .WebTable("html tag:=TABLE", "index:=0") 替换为您 select 编辑的数据,然后重试。希望您可以准确地锁定 table 您所期望的并获得您需要的信息。
不确定您正在查看的 table 是什么,但如果它是服务和信息,那么 table 的 rows/cols 值是 1.The 整个网页由串联的网络 table 组成。因此,捕获这些信息并不难。尝试使用子对象方法并计算网络 table 中 link 的数量,它看起来像这样 -
Set oWebEdit=Description.Create
oWebLink("micclass").value="Link"
Set olink = Browser("title:=.*").Page("title:=.*").WebTable("").childobjects(oWebLink)
olink.count
msgbox olink.count
'然后发起一个for循环
For i = 0 to olink.count-1
' 获取 link 名称
olink. count(i).GetRoproperty("name")
'初始化数组并保存link个名字
如果 get link name 不起作用,那么您可以使用 childitem 方法。 还要确保您为 table 使用了正确的索引,或者也定义了一些其他属性。
P.S。如果您将来打算使用 DP 但尚未使用,那么阅读有关 Childitems/childobjects methods.They 的内容会在使用 DP 时派上用场。