51Testing软件测试论坛

标题: 帮忙看一下脚本,如何才能登记哪条记录删除哪条记录? [打印本页]

作者: linvsfen00    时间: 2007-5-10 09:17
标题: 帮忙看一下脚本,如何才能登记哪条记录删除哪条记录?
如何才能登记哪条记录删除哪条记录?

Services.StartTransaction "登记"
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").Image("btn_dj_on").FireEvent "onmouseover"
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").Image("btn_dj_on").Click
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").WebEdit("addressVO.name").Set "aaa1"  //登记的记录:aaa1
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").Image("btn_bc_on").FireEvent "onmouseover"
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_2").Image("btn_bc_on").Click   //点击保存按钮保存记录
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_3").WebButton("返 回").Click   //保存成功后点击返回按钮
Services.EndTransaction "登记"
Services.StartTransaction "删除"
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_4").WebCheckBox("IDS").Set "ON"    //需要删除刚添加的记录:aaa1
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_4").Image("btn_sc_on").FireEvent "onmouseover"
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_4").Image("btn_sc_on").Click
Browser("测试登录").Dialog("Microsoft Internet Explorer").WinButton("确定").Click

需要删除刚添加的记录,该如何修改脚本?谢谢

[ 本帖最后由 linvsfen00 于 2007-5-15 11:10 编辑 ]
作者: xiaonan    时间: 2007-5-10 09:30
先要找到这条记录,然后再前面的WebCheckBox内set on.
作者: linvsfen00    时间: 2007-5-10 09:35
标题: 找不到在哪?不过还是先谢谢先
前面的WebCheckBox内set on?前面是指哪?

还有登记完记录后,就选择该记录进行删除?
现在回放时,就随机按index来进行删除了,没有登记哪条记录删除哪条记录,比如登记记录为:aaa,回放时就删除别的记录了,没有删除aaa记录

[ 本帖最后由 linvsfen00 于 2007-5-10 12:27 编辑 ]
作者: mldyt0229    时间: 2007-5-10 09:48
标题: 回复
不知道你的系统有没有搜索登记的功能,有的话先搜索你添加的登记记录,找到了然后选择其前面的webcheckbox框,然后删除就可以了。
我想xiaonan 就是这个意思吧。
作者: linvsfen00    时间: 2007-5-10 09:54
标题: 回复 #4 mldyt0229 的帖子
Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_4").WebCheckBox("IDS").Set "ON"这句话不是删除的吗?
   但是删除的是按index顺序来删除的,没有删除到我需要的刚添加的记录:aaa
作者: sidneylover    时间: 2007-5-10 10:26
如果新增记录的index是最大的话,那用描述性编程应该很好删除的

如果不是,可以这样做,先把所有的记录名称(如aaa)取出来放一数组里面,添加记录后,依次把记录取出来与数组里存放的记录比较,存在则不是新增的,不存在那就是新增的了,方法比较傻sdlkfj3
作者: linvsfen00    时间: 2007-5-10 10:51
标题: 回复 #6 sidneylover 的帖子
如果新增记录index是最大的如何用描述编程删除?

现在新增的记录随机存放,所以如果按index删除的话,删除的记录不是新增的,没有删除该新增的记录
作者: linvsfen00    时间: 2007-5-11 16:52
标题: 还是没解决
有谁能帮我一下
作者: linvsfen00    时间: 2007-5-13 16:21
标题: 自己up
up
作者: linvsfen00    时间: 2007-5-14 10:31
标题: 怎么没人知道如何解决啊
怎么没人来帮我看看脚本,如何解决啊
作者: Dorpnight    时间: 2007-5-14 16:30
你所添加的数据是否有id?你只需要取到这个id,然后根据id删除不就行了吗?
作者: linvsfen00    时间: 2007-5-14 16:52
标题: 回复 #11 Dorpnight 的帖子
添加的数据id从哪里获取??
作者: stone821021    时间: 2007-5-15 09:24
我感觉应该视你登陆和删除页面的显示情况,而言!
最好可以把两个界面的图帖出来,这样方便大家讨论!
你手工操作的时候,可以添加一条记录,然后再删除该条记录,那是不是就是说,在删除界面你可以通过相应的字段来确定那条是你刚刚添加进去的记录呢?如果是这样的话,那么这个字段和你添加记录时有没有什么联系呢?
如果有的话,可以试试在添加界面的时候用getroproperty的方法得到能在删除界面唯一确定你要删除的记录的变量,然后用这个变量在确定在删除界面你要删那一条!
作者: lantianwei    时间: 2007-5-15 09:49
我想在QTP里用编程肯定可以实现,比如可以用一个循环去确定你刚增加的那条记录,定位之后再删除.不知道我的回答可不可以帮助你
作者: linvsfen00    时间: 2007-5-15 11:22
标题: 回复 #13 stone821021 的帖子
只有添加保存完成后,才生成一个id的,所以在添加页面无法获得唯一确定你要删除的记录的变量
作者: linvsfen00    时间: 2007-5-15 13:14
标题: 从数据库中取得id解决
从数据库中取得id
在Browser("测试登录").Page("办公自动化系统").Frame("mainFrame_4").WebCheckBox("IDS").Set "ON" 前面加上语句

Browser("湛江信息化测试登录").Page("湛江东兴石油企业有限公司办公自动化系统").Frame("mainFrame").WebCheckBox("IDS").SetTOProperty "value",id
作者: Dorpnight    时间: 2007-5-15 16:01
标题: 回复 #16 linvsfen00 的帖子
你确定这样能取到id吗? 应该不能吧
作者: linvsfen00    时间: 2007-5-15 16:20
标题: 回复 #17 Dorpnight 的帖子
不能啊,

那是赋值的语句
从数据库中取得id后使用该语句进行赋值
作者: linvsfen00    时间: 2007-5-15 16:21
标题: 我现在只能这么做了
也没人回答我,该怎么解决该问题

[ 本帖最后由 linvsfen00 于 2007-5-15 16:25 编辑 ]
作者: Dorpnight    时间: 2007-5-15 16:34
标题: 回复 #18 linvsfen00 的帖子
是啊,我就是看到你用SetTOProperty 所以断定你不可能取到ID

你可以先再数据库里验证添加成功,记录ID;然后做完删除动作后,在到数据库里验证这个ID是否存在

你取出ID然后付给相应的语句这样作意义不大,你测试的重点应该是在删除是否成功上面
作者: stone821021    时间: 2007-5-15 17:14
看了你在一楼的截图!发现一个name为aaa1而另一个为aaa2!不知道你的系统中能不能输入姓名相同的通迅记录!要是不能的话,问题就比较好解决了!
作者: linvsfen00    时间: 2007-5-15 18:13
标题: 回复 #21 stone821021 的帖子
可以输入姓名相同的记录,唯一值是id,而不是姓名,id是点击保存时自动生成的
作者: linvsfen00    时间: 2007-5-15 18:22
原帖由 Dorpnight 于 2007-5-15 16:34 发表
是啊,我就是看到你用SetTOProperty 所以断定你不可能取到ID

你可以先再数据库里验证添加成功,记录ID;然后做完删除动作后,在到数据库里验证这个ID是否存在

你取出ID然后付给相应的语句这样作意义不大,你测 ...



我想知道如何再数据库里验证添加成功?也不知道怎么记录ID?

做完删除动作后,在到数据库里验证这个ID是否存在,怎么验证?
作者: stone821021    时间: 2007-5-16 09:47
如果你的ID是依次递增的话,可以在添加数据以前用sql语句从数据库中读出id最大的那条记录,然后记录下这个ID,在添加完数据以后再从数据库里取出此时id最大的那条记录,记录相应ID, 然后比较这两个ID的值,如果相等的话,则说明添加不成功,如果大的话,那么就说明添加成功了,(前提是你必须要有一个关键字段可以判断数据库里的数据那个才是最新加进去的,比如说日期呀,ID呀(ID随机生成的话应该无法判断的)).然后,在删除界面再根据这个ID去删除相应的记录!
具体怎么实现你应该再想一想!sdlkfj2
作者: linvsfen00    时间: 2007-5-16 11:41
标题: 回复 #24 stone821021 的帖子
ID不是依次递增的,相应的两条记录生成的id如下:
c562c8a3bf214df0a08a6a973bfa5091
f511d4744f4b4cd89898ea1eec4a8de1

这样的话,按您的方法不能实现啊
作者: 雪竹莲    时间: 2007-5-16 12:02
我曾经遇到过这种,我是这样取ID的,不知道是不是和你的一样。因为我看不到你的图片:
Dim strUserid,id,strId
      id=Browser("系统维护").Page("系统维护").Frame("用户列表").Link("text:="&strlid,"html tag:=A").GetROProperty("url") '在url这个属性值中存在我需要删除记录的ID信息
     strId=Mid (id,instr(1,id,"=")+1)  '这一步是把需要的id值取了出来
     strUserid =strId  'strUserid是我要删除的记录前的复选框属性值当中的ID信息
     Browser("系统维护").Page("系统维护").Frame("DetailInfo_9").WebCheckBox("value:="&strUserid).Set "ON")  ’这样就把想删除的记录选中了。
  Browser("系统维护").Page("系统维护").Frame("DetailInfo_9").WebButton("删 除").Click '这样就删除掉啦。

[ 本帖最后由 雪竹莲 于 2007-5-16 12:12 编辑 ]
作者: stone821021    时间: 2007-5-16 12:07
标题: 回复 #25 linvsfen00 的帖子
我觉得你要变通一下,和26楼的一样,要找到添加页面,删除页面,还有数据库的相应表中,能够确定三者关系的东西!ID不能判断就不要用ID了.可以用其它的参数值,因为看不要你的系统,所以大家说的时候也只是提供一些思路!
作者: linvsfen00    时间: 2007-5-16 15:23
标题: 回复 #26 雪竹莲 的帖子
如果我的url是:
url="http://192.168.0.21:8088/addressAction.do?operate=viewAddress&addressId=bfabba1273c245e0a3cfe8c664fa5ff4"

我如何把“bfabba1273c245e0a3cfe8c664fa5ff4”addressId取出来?

这语句是怎么使用的?strId=Mid (id,instr(1,id,"=")+1)

[ 本帖最后由 linvsfen00 于 2007-5-16 15:30 编辑 ]
作者: stone821021    时间: 2007-5-16 15:45
要取addressID可以这样做:
Str="http://192.168.0.21:8088/addressAction.do?operate=viewAddress&addressId=bfabba1273c245e0a3cfe8c664fa5ff4"
AddressID=Right(Str,Id.length)


Mid(string, start[, length])
Mid 函数的语法有以下参数:
参数描述
string字符串表达式,从中返回字符。如果 string 包含 Null,则返回 Null
startstring 中被提取的字符部分的开始位置。如果 start 超过了 string 中字符的数目,Mid 将返回零长度字符串 ("")。
length要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到字符串结束的所有字符。


多查资料呦!楼主!

[ 本帖最后由 stone821021 于 2007-5-16 15:48 编辑 ]
作者: linvsfen00    时间: 2007-5-16 16:04
标题: 已经取出id,谢谢楼上的
已经取出id,谢谢楼上的,

只是我的url在增加和删除里都没有,这个url是我在查看该新增记录页面取得的。
作者: linvsfen00    时间: 2007-5-16 16:08
标题: 回复 #29 stone821021 的帖子
AddressID=Right(Str,Id.length)

id的length因为不是固定的,所以该方法取得的值不对,

strId=Mid (id,instr(60,id,"=")+1)
作者: linvsfen00    时间: 2007-5-16 16:10
标题: 回复 #26 雪竹莲 的帖子
谢谢雪竹莲,按您的方法:strId=Mid (id,instr(60,id,"=")+1)
可以取得id

只是我的url在增加和删除里都没有,这个url是我在查看该新增记录页面取得的。
作者: 雪竹莲    时间: 2007-5-16 16:36
标题: 回复 #32 linvsfen00 的帖子
我从URL中取是因为在查看对象属的时候看到在URL这一项中存在我所需要的ID。你可以根据你的对象属性看一下哪一个属性中是存在你所需要的ID信息,并且能够取出来,你就使用那个属性就可以了。:)
作者: stone821021    时间: 2007-5-16 16:40
在添加页面取出你输入的数据,然后做为参数传入SQL语句,查找出与新加记录的对应的那个ID!
例如:
select id from table where name="..",phone:=".."....
作者: linvsfen00    时间: 2007-5-16 17:24
标题: 回复 #33 雪竹莲 的帖子
恩,我知道,如果我只是做添加和删除操作的话就无法取得url,
所以我现在取得的url是添加完记录,查看记录,然后才进行删除

url是查看页面取得的,学到不少
作者: linvsfen00    时间: 2007-5-16 17:38
标题: 回复 #34 stone821021 的帖子
谢谢stone821021。
这个方法已经实现,
从数据库中取值:
id="select id from table where name="aaa1""
只不过现在只按名称取值然后再执行,也可以参数传入SQL语句执行

Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").WebCheckBox("value:="&id).Set "ON",就可以实现

如何把变量值输出到datatable中?
比如 Dim mm
mm=Browser("测试登录").Page("办公自动化系统").Frame("mainFrame").GetRoProperty("Value")
如何把它输出到datatable中,现在查看只能 MsgBox mm
作者: stone821021    时间: 2007-5-16 17:45
我之所以让你多选几个参数传入到sql语句中,是因为你前面说name值可以重复,你这只传name的话,要是输入了多个name相同的记录会出错的.不防多加几个参数确保sql执行后,
id的值唯一,而不是一个集合.

要把mm输出到dataTable中可以试试 DataTable.value(column_name,sheet_name) =mm
通过你的提问可以发现,你很少看QTP 的帮助,想学好QTP还是要多看帮助的.sdlkfj2
作者: linvsfen00    时间: 2007-5-16 17:58
标题: 回复 #37 stone821021 的帖子
现在服务器出现问题停,明天准备试试多选几个参数传入到sql语句中,

因为刚学qtp了解得不多,呵呵,谢谢stone821021
作者: linvsfen00    时间: 2007-5-17 10:54
标题: 回复 #37 stone821021 的帖子
今天试试多选几个参数传入到sql语句中,正确删除要删除的记录,呵呵,问题解决
作者: linqm    时间: 2007-5-18 15:17
标题: newer
测试脚本一般是用什么语言编写的呀有没有专用的测试语言啊还是在测试工具中编写么?是不是不同的工具有不同的测试脚本语言
邮箱:gzlqm@yahoo.com.cn
新手希望能帮哦谢谢




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2