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 ...
随机推荐
- vim Ctags 和taglist安装和使用
Ctags是一个用于从程序源代码树产生索引文件(或tag文件),从而便于文本编辑器来实现快速定位的实用工具.在产生的tag文件中,每一个tag的入口指向了一个编程语言的对象.这个对象可以是变量定义.函 ...
- python类继承
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过 继承 机制.继承完全可以理解成类之间的 类型和子类型 关系. 假设你想要写一个程序来记录学校之中的教师和学生情况.他们有一些 ...
- 求n^k的前缀和
我都已经高二了,却还不知\(1^2+2^2+3^2+4^2+...+n^2\)的通式,真是惭愧. 现在说说如何求\(n^k\)的前缀和. 如果k比较小,我们可以直接差分序列手算.否则,我们可以用神奇的 ...
- C# RSA在服务上使用出现拒绝方法错误的解决方法
在做一个快钱接口的时候,遇到了.net RSA加密无法在一台win2008服务器上运行正常,更换到Win2003服务器后出现问题,具体表现如下: “/”应用程序中的服务器错误. ----------- ...
- 代码中函数、变量、常量 / bss段、data段、text段 /sct文件、.map文件的关系[实例分析arm代码(mdk)]
函数代码://demo.c #include<stdio.h> #include<stdlib.h> , global2 = , global3 = ; void functi ...
- 提高你开发效率的十五个Visual Studio 2010使用技巧
提高你开发效率的十五个Visual Studio 2010使用技巧 相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个ID ...
- 基于FPGA的DW8051移植(一)
最近 半个月都在移植8051,看到DW8051内核资料比较齐全又是新思发布的,所以就开始玩弄 可是这半个月的努力几近白费 —— 移植失败了,不知道从何着手这个内核.可能大家能找到不同的版本,我的是最初 ...
- android网络交互之DNS优化知识整理
android网络交互之DNS优化知识整理 之前的工作中,经常会遇到DNS解析出问题导致网络交互的操作无法正常进行. UnknownHostException 在很多的移动开发过程中,与服务端的交互的 ...
- 基于visual Studio2013解决C语言竞赛题之0518回文数
题目
- 用Swift完成不同View Controller之间的切换
之前用objective-c开发时,页面之间的切换很容易.其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只不过在代码部分写成swift风格的就行了. 今 ...