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的更多相关文章

  1. SilkTest Q&A 7

    Q61.有一个用Dotnet开发的应用,有1000个为测它而录制的case,一直都运行的很正常,直到有一天… 有人改变了该应用命名空间,由于现在有一个新的window或是panel出现,所以测试脚本一 ...

  2. SilkTest Q&A 9

    Q81:我应该如何存取excel sheet里面的空字符串? A81:定制代码如下: 解决方案1: [-] if sText!=NULL [ ] Page.tfldName.SetText(sText ...

  3. SilkTest Q&A 2

    Q11:SilkTest中有没有计算web页面上单词数量的函数? A11:你可以使用Clipboard函数.使用Ctrl+a和Ctrl+c,然后解析string的list. Q12:silktest的 ...

  4. SilkTest Q&A 4

    Q31.如何在inc文件里面写函数? A31.在你在inc文件(例如demo.inc)里写好函数以后,你需要使用Use path/Use file来指定指定它们. 在SilkTest中->Opt ...

  5. SilkTest Q&A 12

    111. 谁能告诉我,正在执行的SilkTest的log是存放在哪里? 答案1: 用下面的命令可以导出文本格式的log "c:/program files/segue/silktest/pa ...

  6. SilkTest Q&A 8

    Q72.如何在一个testplan中运行所有的testcase? A72. 1.打开testplan 2.点击Run/Run All Tests菜单,SilkTest开始执行testplan中所有的t ...

  7. SilkTest Q&A 10

    92. 如何把单个表达式分两行来写? 答案1: 使用Shift + Enter 答案2: 很容易在online help里面找到答案: 1)      line break in code 2)    ...

  8. SilkTest Q&A 11

    101. 如何从其他的机器访问脚本? 答案:将包含脚本的文件夹共享出来…非常简单…你可以使用connect()在你本机运行脚本从而使得它们在其他的一些机器上执行…但是其他人无法访问这些脚本,除非你将它 ...

  9. SilkTest Q&A 3

    Q21:如何给testcase的属性赋值? A21: 1.确定你的testplan处于打开状态. 2.点击你准备赋属性值的testcase 3.点击TestPlan/detail菜单,testplan ...

随机推荐

  1. QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种,实测成功)

    以VS开发为例.因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com ...

  2. 一个i++和++i导致的严重的错误

    当我曾经在写一个strlen的实现时,用递归写出了如下的代码: int strlen(const char *s) { if(*s=='\0') ; else ; } 程序一运行就崩溃了,why!都是 ...

  3. Windows Azure 社区新闻综述(#75 版)

    欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 ·   PowerShell 对 Windows A ...

  4. BZOJ 3038: 上帝造题的七分钟2

    3038: 上帝造题的七分钟2 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分 ...

  5. ALEXANDER WANG 北京旗舰店开业活动

    ALEXANDER WANG 北京旗舰店开业活动-搜狐女人 ALEXANDER WANG 北京旗舰店开业活动

  6. 基于mini2440的IIC读写(裸机)

    mini2440开发板提供的测试代码过于复杂,让人很难理解,而且有些错误,如GPE14-15不能设置上拉电阻,可是代码里却设置了,虽然无关紧要.为了方便学习,我在闲暇之时我研究了一下.IIC的原理是比 ...

  7. ShareSDK for Android 只有新浪微博分享

    本文代码例子:http://pan.baidu.com/share/link?shareid=3710053477&uk=3189484501 ShareSDK 官方的例子非常好,但代码太多看 ...

  8. 模拟Hibernate框架的小demo

    该程序为尚学堂马士兵老师讲解,模拟了hibernate的原理,主要应用了字符串拼接,反射知识. step1,新建数据库 use jd; create table _student( _id int(1 ...

  9. c++,模板函数的定义和使用【初探】

    // demo.cpp : // 模版函数的定义和使用: // 1.模板支持返回参数类型为模板参数. // template <typename RET_T , typename IN1_T , ...

  10. XHTML 基础(含部分css)

    基于http://www.ycku.com/xhtml/ 的视频教程的一些笔记 关于xhtml的解释 引用百度百科 可扩展超文本标记语言,是一种置标语言,表现方式与超文本标记语言(HTML)类似,不过 ...