SilkTest Q&A 13
Q121 :我想要测试 windows2003 上的 remote 应用,但是每次都得到如下的错误
我想要测试 windows2003 上的 remote 应用,但是每次都得到如下的错误:
"*** Error: Bad channel to agent call" .
我的host 和agent 机器都是windows2003. 我已经改变了网络选项,设置为tcp/ip 和端口2965. 而且我还改变了在runtime 选项中agent 名字,将其设置为ip 地址,network 设为tcp/ip. 而且,我还enable 了相关的extensions。谁能告诉我是否还遗漏了什么,或者我还需要做什么,或者有人遇到过同样的问题么?
答案:试着用remote recording 然后用SilkTest 提供的工具来回放,同样,agent 名和ip 地址需要被设置在host 机器的runtime 选项中。使用connect() 来连接target 机器。在连接之后,你不在需要host 安装的机器上的agent 了。所以,host 机器上agent 是否是local 已经无所谓了。如果你不使用connect(), 你需要在host 的runtime 选项中提到remote 机器名(我想是这样,但我没有试过)。。现在让我们再看remote 机器,即使我们没有安装host 在remote 机器上( 只安装了agent) ,你的脚本一样能跑。在remote 机器上的host 不会被用,所以remote 机器上的设置无所谓。只有remote agent 会被用到,remote agent 上的网络设置需要被enable 。
如果你在agent 选项中使用“localhost ”,记录和回放会被本地完成。例如:silk host 会用本地agent 来做这些事情。但是如果你使用"ipaddress:port" ,silk host 会用remote agent 来做这些事情。
下面是一个例子,它完成了在remote 机器192.168.240.102 上调用notepad ,然后关闭它。
[ ] const wMainWindow = Notepad
[ ]
[-] window MainWin Notepad
[ ] tag "*Notepad*"
[ ]
[ ] const sCmdLine = "C:/WINNT/system32/NOTEPAD.EXE"
[ ]
[-] main ()
[ ]
[ ] Connect ("192.168.240.102 ")
[ ]
[ ] Notepad.Invoke ()
[ ] Sleep (2)
[ ]
[-] if Notepad.Exists ()
[ ] Print ("Notepad invoked at remote")
[ ] Notepad.SetActive ()
[ ] Notepad.TypeKeys ("")
[ ] Sleep (2)
[-] else
[ ] LogError ("Notepad not invoked")
122.我在执行多个testcase。假如在第一个case中有一个函数返回string。如何将其返回值用在第二个case中?
答案1: 在testcase之前申明一些全局变量,例如gPersonReferenceNumber然后将其传进testcase里面。
void TestScriptSetup()
SetAppState ("YOURAPPSTATE")
gPersonReferenceNumber = CreateMinimalTestPerson()
testcase CallGlobalReference() appstate none
string sPersonString = gPersonReferenceNumber
TestScriptSetup()会在CallGlobalReference()之前执行,如果有必要你也可以将其包含进你的复原系统中。
CreateMinimalTestPerson()会返回一个和PersonID相关的string。
答案2:
1. 使用全局变量存储你的值。
2. 让testcase返回值,然后在其后的testcase中使用。
答案3:
把该值放入ini文件或者注册表中
答案4:
通过Sys_SetEnv()设置环境变量,然后用sys_GetEnv()读取出来使用。全局变量也可以,但是当你从testplan里面调用testcase,全局变量会被重置。另外一个可选择的办法是把他们存入文件,然后使用。
124.如何同时通过silktest启动两个web应用?
我正在测试一个web应用的登录功能,在第一个窗口中登录成功,第二窗口应该显示用户已经登录的错误信息。
但是由于silktest中recovery system的限制,我只能启动一个应用窗口。如何能同时启动两个呢?
答案:
Browser.Invoke ()
Browser.LoadPage ("URL for login screen")
Browser.WaitForReday ()
// Do login
Browser.Invoke ()
Agent.SetOption (OPT_VERIFY_UNIQUE, FALSE)
Browser.LoadPage ("URL for login screen")
Browser.WaitForReday ()
// Attempt to login and verify the message
Agent.SetOption (OPT_VERIFY_UNIQUE, TRUE)
Browser.TypeKeys ("")
125.如何将绝对路径转换成为相对路径?
我需要在silktest project中使用相对路径。如何把绝对路径转换成为相对路径呢?(我的目的是,当将project打包的时候,该包可以被用在其他的机器上,而不考虑被放到什么路径下)
答案:
Silktest project提供了解决该问题开箱即用的特性。如果你的测试集是用project组织的,最好的选择就是在runtime选项中使用相对路径,让测试的集的root目录hardcode。
例如:使用Path=S:/Suite, 其中S是自动测试集的root目录
然后使用其他文件的时候就可以用相对路径,例如:frame.inc, ../config/config.inc等等。
126.如何搜索html link?
我又一个case需要创建location,silktest从html link中读取该location。该location是按字母顺序存储的。但是没有特定的tag与其相联系,如何搜索该html link呢?
答案:
下面是一个html table的函数,该函数检查传入的link名是不是一个html link.其中的this参数指代的是该html table
[+] BOOLEAN IsHtmlLink(STRING sLinkName)
[+] do
[ ] INTEGER iColCnt=0,iRowCnt=0,iNextCCnt,iNextRCnt
[ ] BOOLEAN bflag=FALSE
[ ] iColCnt=this.GetColumnCount()
[ ] iRowCnt=this.GetRowCount()
[ ]
[-] for (iNextRCnt=1;iNextRCnt<=iRowCnt;iNextRCnt++)
[-] if !bflag
[-] for (iNextCCnt=1;iNextCCnt<=iColCnt;iNextCCnt++)
[-] if (this.HtmlColumn("#{iNextCCnt}").GetRowText(iNextRCnt) == sLinkName
)
[-] if (Trim(this.HtmlColumn("#{iNextCCnt}").HtmlLink("#{iNextRCnt}").GetLocation()) !="")
[ ] bflag=TRUE
[ ] break
[ ]
[-] else
[ ] break
[ ]
[ ] return (bflag)
[-] except
[ ] return (FALSE)
SilkTest Q&A 13的更多相关文章
- SilkTest Q&A 7
Q61.有一个用Dotnet开发的应用,有1000个为测它而录制的case,一直都运行的很正常,直到有一天… 有人改变了该应用命名空间,由于现在有一个新的window或是panel出现,所以测试脚本一 ...
- SilkTest Q&A 9
Q81:我应该如何存取excel sheet里面的空字符串? A81:定制代码如下: 解决方案1: [-] if sText!=NULL [ ] Page.tfldName.SetText(sText ...
- SilkTest Q&A 2
Q11:SilkTest中有没有计算web页面上单词数量的函数? A11:你可以使用Clipboard函数.使用Ctrl+a和Ctrl+c,然后解析string的list. Q12:silktest的 ...
- SilkTest Q&A 4
Q31.如何在inc文件里面写函数? A31.在你在inc文件(例如demo.inc)里写好函数以后,你需要使用Use path/Use file来指定指定它们. 在SilkTest中->Opt ...
- SilkTest Q&A 12
111. 谁能告诉我,正在执行的SilkTest的log是存放在哪里? 答案1: 用下面的命令可以导出文本格式的log "c:/program files/segue/silktest/pa ...
- SilkTest Q&A 8
Q72.如何在一个testplan中运行所有的testcase? A72. 1.打开testplan 2.点击Run/Run All Tests菜单,SilkTest开始执行testplan中所有的t ...
- SilkTest Q&A 10
92. 如何把单个表达式分两行来写? 答案1: 使用Shift + Enter 答案2: 很容易在online help里面找到答案: 1) line break in code 2) ...
- SilkTest Q&A 11
101. 如何从其他的机器访问脚本? 答案:将包含脚本的文件夹共享出来…非常简单…你可以使用connect()在你本机运行脚本从而使得它们在其他的一些机器上执行…但是其他人无法访问这些脚本,除非你将它 ...
- SilkTest Q&A 3
Q21:如何给testcase的属性赋值? A21: 1.确定你的testplan处于打开状态. 2.点击你准备赋属性值的testcase 3.点击TestPlan/detail菜单,testplan ...
随机推荐
- border-radius.htc为ie6-8实现圆角
~~圆角是比较常用的css3属性,但是ie6-8并不支持圆角,可用border-radius.htc html组件实现圆角, border-radius.htc内部应用vml进行了重绘 border ...
- struts ModelDriven
在表单提交的时候传值是这样,name=admin.username name=admin.password,然后在action中定义属性admin生成get和set 也可以实现ModelDriven这 ...
- android串行化getSerializable、getSerializableExtra
android串行化getSerializable.getSerializableExtra 传参 总结 案例1 不用 Bundle 封装数据 提交activity lst.setOnItemClic ...
- android 修改背景色(转)
修改为黑底白字 修改AndroidManifest.xml把android:theme="@style/AppTheme" 修改为android:theme="@andr ...
- JQuery实现表格的相同单元格合并的三种方法
代码: <!DOCTYPE html> <html> <head> <title>merge.html</title> <meta h ...
- linux下安装greenplum
1. 下载 Greenplum Database 源代码 $ git clone https://github.com/greenplum-db/gpdb 2. 安装依赖库 Greenplum Dat ...
- PigCms 回复消息 "域名授权错误! 您使用的微信平台或源码为盗版"
本文地址:http://duwei.cnblogs.com/ Pigcms 将自动回复的API 写死了, 这里提供一个可用的API 在 PigCms/Lib/Action/Home/Weixinact ...
- fastxml Jackson JsonNode (ObjectNode) 转 List
做环聊开发, Java 后台示例 用的 fastxml Jackson 解析json(擦, 狗屎, 不能支持下国产吗?) 有的json字段是数组, 发现不会解析了, 谷歌了下, 用以下方法可行,(不知 ...
- 基于Sql Server 2008的分布式数据库的实践(四)
原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create ...
- Hadoop集群配置(最全面总结)
Hadoop集群配置(最全面总结) 通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker.这些机器是masters.余下的机器即作为DataNode也作为Ta ...