标签:des style io ar os 使用 sp for java
1、在调试脚本时,可能会出现,脚本没有执行完就提前结束运行; | |||
在语法没有问题的前提下,需要排查变量的问题: | |||
变量声明要求:建议使用Option Explicit语句强制显式声明所有变量; | |||
VBS声明变量有三种:显示声明、隐式声明和强制声明; | |||
使用隐式声明方式的习惯不好,因为这样有时会由于变量名拼错而导致程序运行出现意外,因此,最好在每个脚本开始第一行使用Option Explicit语句强制显式声明所有变量。 | |||
注意:在VBScript中,变量名是不区分大小写,即userName与UserName是指同一个变量。 | |||
2、MTStar中,如何获取【商品数据管理】详细内容的行数,选择某行信息,获取某列的内容(详细内容的控件不是Table,而是WebElement) | |||
ChildObjects方法: | |||
Set oDesc = Description.Create() ‘建立一个空属性的对象 | |||
oDesc("html tag").value="table" ‘在空的对象中添加属性html tag,并赋值为“table” | |||
Set Lists =Browser("*").Page("*").Frame("*").WebElement("*").ChildObjects(oDesc) | |||
‘在制定界面上获取所有属性值为"table"的对象,并赋值给Lists(注意:赋值后lists类型一个对象数组) | |||
NumberOfLists = Lists.Count() ‘获取lists里面所有对象的总数 | |||
i=randomnumber(0,NumberOfLists-1) | |||
Lists(i).Click ‘选择列表中的随机行 | |||
PLU_NAME_1 = Lists(t).celltext(1,3) ‘获得随机行中的商品名称 | |||
3、MTStar中,新建【计划任务】,选择指定日期时间执行任务时,随机选择时间的方法 | |||
同样可以使用ChildObjects方法: | |||
Set oDesc = Description.Create() | |||
oDesc("micClass").value = "WebElement" | |||
Set Lists = Browser("*").Page("*").Frame("*").WebElement("指定日期_时间选择").ChildObjects(oDesc) | |||
NumberOfLists = Lists.Count()‘获得指定日期中下拉框时间的可选择的数量,然后随机选择某个时间 | |||
x = RandomNumber(1,96) | |||
Lists(x).click | |||
思路:想要随机选择时间,首先要确定包含这个时间的父控件,即WebElement,然后确定该时间的控件属性(子控件),也是WebElement;我们需要在父控件中将所有子控件的对象全部统计,然后即可完成随机选择时间; | |||
注:通过2、3两个例子,可灵活使用ChildObjects方法。 | |||
4、MTStar中,获取【商品数据管理】中详细信息中所有PLU的属性值(如单价),需要验证商品批量变价功能 | |||
index使用: | |||
方法一:使用第2个例子中 Lists(t).celltext(1,3)的方法,“3”代表t行中顺序第三个内容; | |||
方法一的前提是,每个人的PLU可用字段设置需要一致(可在【系统设置】设置);故使用第一种方法有一定的局限性; | |||
方法二:使用描述性编程描述Browser("*").Page("*").Frame("*").WebElement("class:=x-grid3-col x-grid3-cell x-grid3-td-grid_PRICE_1","index:="&i).GetROProperty("innertext") | |||
思路:先确定要获取的值是什么属性,该例属性是WebElement,然后要定位具体详细属性,可以通过IE8自带的“开发人员工具”(F12)来定位该字段,获取详细属性; | |||
注:使用index的前提,多个属性拥有某个相同的详细属性,如例子中的“class”; | |||
5、MTStar中,验证备份、下载等功能时,需要清空保存路径中相同文件名的文件 | |||
方法一: | |||
set fso=CreateObject("Scripting.FileSystemObject") | |||
bFileExist=fso.FileExists(ExcelDir) | |||
if bFileExist then | |||
set xlApp=fso.GetFile(ExcelDir) | |||
xlApp.Delete | |||
end if | |||
方法二: | |||
Set fso = CreateObject("Scripting.FileSystemObject") | |||
If fso.FileExists (sSourceFile) Then | |||
fso.DeleteFile (sSourceFile) | |||
wait 2 | |||
Set fso = Nothing | |||
end if | |||
6、验证备份、下载功能,需要读取下载文件中的行数 | |||
‘读取文件中明细行数: | |||
Set ExcelApp = CreateObject("Excel.Application") ‘创建Excel自动化模型对象 | |||
Set Workbook = ExcelApp.Workbooks.Open(ExcelDir) ‘ExcelDir为Excel的路径 | |||
rowcount = Workbook.ActiveSheet.UsedRange.Rows.count-1 ‘去掉标题行 | |||
Workbook.Close | |||
ExcelApp.Quit | |||
set Workbook=nothing | |||
Set ExcelApp=nothing | |||
7、对控件对象的FireEvent方法使用 | |||
1、它支持的事件有:onchange,onclick,ondblclick,onblur,onfocus,onmousedown,onmouseup, | |||
onmouseover,onmouseout,onsubmit,onreset,onpropertychange。 | |||
2、用法: | |||
如:(对象*).FireEvent ("onfocus");获得对象的焦点 | |||
8、获取随机数的方法 | |||
方法一: | |||
myRnd = RandomNumber(m,n) ‘生成m到n之间的随机数 | |||
方法二: | |||
Randomize ‘初始化随机数产生器 | |||
myRnd = Int(((y - x + 1) * Rnd) +x) ‘生成x到y之间的随机数 | |||
9、框架转移问题 | |||
框架转移到JAVA版mtstar上需要修改以下内容: | |||
1、打开QTP,Automation-Record and Run Settings-Web,修改默认打开URL链接,在今后做调试的时候可直接打开新的URL; | |||
2、对应步骤1,还需要在主运行脚本.vbs文档中修改QTP默认打开的URL链接:qtTest.Settings.Launchers("Web").Address=【最新的URL】; | |||
3、可直接将之前的Login通用脚本,用在新的项目中,但需要重新添加对象库; | |||
4、脚本中需要添加两个环境变量:Log:File>C:\jintt\MT_Star_Quicktest\Report\2014-4-21_165047.xls;和TestPage:\TestCase\计划任务 | |||
5、添加Action时,选择Call to New Action时,务必要选择“After the current step”,然后再删除对应的“RunAction "***", oneIteration”语句 | |||
(如果选择“At the end of the test”,虽然不会出现“RunAction "***", oneIteration”语句,但是所有脚本运行结束后,仍然后继续执行刚新增的Action)。 | |||
10、判断对象是否存在的用法注意 | |||
Browser(*).Page(*).Link(*).Exist(0) = True | |||
False ----这个要注意了,明明Exist返回的是True,但这条语句就是返回 False; | |||
QTP的Exist有问题,因此以后使用时只使用以下形式: | |||
if Browser().Page().WebElement().exist(10) Then | |||
…… | |||
End if | |||
或 | |||
if Not(Browser().Page().WebElement().exist(10)) Then | |||
…… | |||
End if | |||
11、WebTable控件 | |||
WebTable对象常用的方法有:ColumnCount、RowCount、GetCellData、ChildItem等。以下为四个方法的语法: | |||
1、ColumnCount 方法 | |||
描述:返回表中的列数 | |||
语法:object.ColumnCount (Row) | |||
object:类型 WebTable 的测试对象。 | |||
Row:必填. Long 值。 行号。表中的第一行编号为 1。 | |||
返回类型:Long 值。 | |||
2、RowCount 方法 | |||
描述:返回表中的行数 | |||
语法:object.RowCount | |||
object:类型 WebTable 的测试对象。 | |||
返回类型:Long 值。 | |||
3、GetCellData 方法 | |||
描述:返回包含于指定单元格中的文本 | |||
语法:object.GetCellData (vtRow, vtColumn) | |||
object:类型 WebTable 的测试对象。 | |||
vtRow:必填. Variant 值。 单元格所在行的行号。表中的第一行编号为 1。 | |||
vtColumn:必填. Variant 值。 单元格所在列的编号。表中的第一列编号为 1。 | |||
返回类型:String 值。 返回指定单元格中包含的数据。 | |||
如果指定单元格无效,该方法返回 micCellDoesNotExist | |||
4、ChildItem 方法 | |||
描述:按类型和索引返回单元格中的测试对象 | |||
语法:object.ChildItem (Row, Column, MicClass, Index) | |||
object:类型 WebTable 的测试对象。 | |||
Row:必填. Long 值。 单元格所在行的行号。表中的第一行编号为 1。 | |||
Column:必填. Long 值。 单元格所在列的编号。表中的第一列编号为 1。 | |||
MicClass:必填. String 值。 对象类型。 | |||
Index:必填. Long 值。 单元格中 MicClass 类型的对象的索引。 | |||
当单元格中有多个 MicClass 类型的对象时,此索引指示所需的元素。 | |||
第一个对象的索引为 0。 | |||
返回类型:Object 对象。 | |||
实例一: | |||
Dim RowCount | |||
RowCount = Browser("Browser").Page("Page").WebTable("WebTable").RowCount | |||
msgbox RowCount | |||
For I = 2 to RowCount | |||
cons_no=Browser("Browser").Page("Page").Frame("Frame").WebTable("html tag:=table","index:=2").GetCellData(4,2) | |||
reporter.ReportEvent micDone,"用户编号","用户编号为:"&cons_no | |||
Next | |||
实例二: | |||
Set objTable=Browser("creationTime:=0").Page("index:=0").Frame("name:=TreeMenuFrame").WebTable("html tag:=TABLE","index:=1") | |||
dim intRow | |||
intRow = Browser("creationTime:=0").Page("index:=0").Frame("name:=TreeMenuFrame").WebTable("html tag:=TABLE","index:=1").GetROProperty("rows") | |||
dim intColumn | |||
intColumn=Browser("creationTime:=0").Page("index:=0").Frame("name:=TreeMenuFrame").WebTable("html tag:=TABLE","index:=1").GetROProperty("cols") | |||
Set objLink = objTable.ChildItem(intRow,intColumn,"Image",32) | |||
If not objLink.Exist(0) Then | |||
msgbox "系统中没有您要找的菜单,请检查!" | |||
else | |||
objLink.click | |||
End If |
标签:des style io ar os 使用 sp for java
原文地址:http://www.cnblogs.com/tester-juan/p/4159532.html