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 ...
随机推荐
- 自己写的一个简单的Tab类
//------------- PS_DOM 功能函数 start----------------var PS_DOM ={ indexOf: function(arr, e){ for(var i= ...
- WPF:使用Json.NET在TreeView中树形显示JSON数据
原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...
- Codeforces Round #200 (Div. 2) C. Rational Resistance
C. Rational Resistance time limit per test 1 second memory limit per test 256 megabytes input standa ...
- FMDB的基本应用
FMDB简介 iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较频繁.于是,就出现了一系列将AQLite API进行封装的库,例如FMDB.PlausibleDa ...
- poj 3691
ac自动机+dp 自动机上的节点来作为状态 dp[i][j]表示长度为i状态为j至少需要转换多少个字符 #include <iostream> #include <cstdio> ...
- 浅谈独立使用NDK编译库文件(Android)
阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...
- ThinkPHP - URL - 伪静态 - 路由 - 重写
URL: 一.URL规则 1.默认是区分大小写,可以修改(配置文件)为不区分大小写. 2. //修改URL大小写问题 'URL_CASE_INSENSITIVE' =>true, 如果模块名为 ...
- ADO.NET 总结
一.简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data.C ...
- 浏览器与服务器间的交互(客服端 <---> 服务器)
浏览器与服务器间的交互(客服端 <---> 服务器) 请求--->处理--->响应 对类HttpContext 内部成员的使用 例如 :Request .Response . ...
- cURL实现get、post请求
1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性 ...