SilkTest Q&A 9
Q81:我应该如何存取excel sheet里面的空字符串?
A81:定制代码如下:
解决方案1:
[-] if sText!=NULL
[ ] Page.tfldName.SetText(sText) // do the operation
[-] else
[ ] Page.tfldName.CleartText()
永久解决方案:将下面的winclass加入你的代码中,如果你的是web应用就直接拷贝粘贴,否则将htmlTextField改成TextField,这样Text field将不会因为空值而产生异常。
[-] winclass HtmlTextField: HtmlTextField
[ ]
[-] void SetText(String sText optional)
[+] if sText==NULL
[ ] this.ClearText()
[+] else
[ ] derived::SetText(sText)
Q82:如何用负向测试方法测试一个webpage?我需要捕捉所有的错误页么?
A82:捕捉所有的错误信息会增加你的脚本长度…捕捉一个页面并且使用”*”从而试着使identifier能够对所有的页面通用。
如果错误页以text message的方式出现,得到该text的索引(一般它是固定的)并且得到测试中的值从而与期望值进行比较,例如:
if BrowserPage.HtmlText ("#1").GetText () == "Invalid date"
Print ("Pass")
else
Print ("Fail")
假设第一次,你输入一个无效的mail ID,结果错误页的tag是” Error Page - Invalid mail ID”,第2次你输入一个无效的日期,结果错误页的tag是"Error Page - Invalid date"。为了泛化错误页,将tag改成"Error Page - Invalid*"或者"Error Page*",来表示这里出现了错误页。
Q83.如何用cmd命令行运行.bat文件,从而执行test plan?
A83:可以使用如下方法设置。
- Enter Plan File Path - e.q - c:/test
- Plan File Name - e.q - sample.pln
语法为"C:/Program Files/Segue/SilkTest/partner.exe" -r "/.pln"
例如:"C:/Program Files/Segue/SilkTest/partner.exe" -r "c:/test/sample.pln"
将上面一行拷贝成.bat文件,然后用cmd命令行运行它。
Q84:从开发者的角度来看,SilkTest内部实际上是如何工作的?
A84:
答案1:
Silktest和GUI交互,将操作自动提交给应用程序。也就是,silktest驱动应用。
它由不同的两部分软件组成:
(i)silktest host软件
(ii)4Test Agent软件
host软件是你用来开发,编辑,编译,运行,调试你的4Test脚本和test plan的程序。
4Test Agnet是将你的4Test脚本翻译成GUI相关命令的软件。一个Agent可以运行在本地的host机器上,在网络环境中,任何数量的Agent可以运行在远程的机器上。
答案2:
Silktest和其他GUI自动工具通过以下方式工作:
1.你需要录制应用程序的GUI。这相当与告诉silktest它将运行在什么上面。
2.使用录制的应用程序的GUI来编写testcase的脚本。
3.在一个新构建的版本上,再次执行你的testcase。
任何失败可能由以下情况导致:
1.应用程序错误
2.脚本错误
假设是脚本的错误,可能的原因如下:
1.逻辑错误
2.产品行为的改变导致脚本错误(因此,脚本需要被更新)
3.或者,应用程序的GUI发生了变化,这意味着你需要更新GUI的记录。
当一个自动工具录制GUI时,它主要通过该GUI特定的属性捕捉每个GUI对象,该属性在下一次自动执行时用来标识该GUI。
为了给你举例,让我考虑在一个典型的用户登录页中,有三个GUI实体。
1.用户名域
2.密码域
3.登录按钮
假设登录按钮有一个htmlid=login,silktest将会记录该GUI为HTMLPushButton,其id属性等于login(该文本标题可能根据button的不同而变化,比如:”Log in”)
如果已经决定将该按钮的标题改成”Sign In”,而不改变htmlid属性,这种情况下,silktest还是能够正确地回放该GUI的自动脚本。
但是万一,在下一个构建中,开发人员保持该按钮的标题名,但是改变其html id为”signin”,silktest将无法认出该按钮,即使对于用户来说看上去什么也没有改变。
这就是大部分自动测试工具工作的基本原理。
Q82:如何用负向测试方法测试一个webpage?我需要捕捉所有的错误页么?
A82:捕捉所有的错误信息会增加你的脚本长度…捕捉一个页面并且使用”*”从而试着使identifier能够对所有的页面通用。
如果错误页以text message的方式出现,得到该text的索引(一般它是固定的)并且得到测试中的值从而与期望值进行比较,例如:
if BrowserPage.HtmlText ("#1").GetText () == "Invalid date"
Print ("Pass")
else
Print ("Fail")
假设第一次,你输入一个无效的mail ID,结果错误页的tag是” Error Page - Invalid mail ID”,第2次你输入一个无效的日期,结果错误页的tag是"Error Page - Invalid date"。为了泛化错误页,将tag改成"Error Page - Invalid*"或者"Error Page*",来表示这里出现了错误页。
Q83.如何用cmd命令行运行.bat文件,从而执行test plan?
A83:可以使用如下方法设置。
- Enter Plan File Path - e.q - c:/test
- Plan File Name - e.q - sample.pln
语法为"C:/Program Files/Segue/SilkTest/partner.exe" -r "/.pln"
例如:"C:/Program Files/Segue/SilkTest/partner.exe" -r "c:/test/sample.pln"
将上面一行拷贝成.bat文件,然后用cmd命令行运行它。
Q84:从开发者的角度来看,SilkTest内部实际上是如何工作的?
A84:
答案1:
Silktest和GUI交互,将操作自动提交给应用程序。也就是,silktest驱动应用。
它由不同的两部分软件组成:
(i)silktest host软件
(ii)4Test Agent软件
host软件是你用来开发,编辑,编译,运行,调试你的4Test脚本和test plan的程序。
4Test Agnet是将你的4Test脚本翻译成GUI相关命令的软件。一个Agent可以运行在本地的host机器上,在网络环境中,任何数量的Agent可以运行在远程的机器上。
答案2:
Silktest和其他GUI自动工具通过以下方式工作:
1.你需要录制应用程序的GUI。这相当与告诉silktest它将运行在什么上面。
2.使用录制的应用程序的GUI来编写testcase的脚本。
3.在一个新构建的版本上,再次执行你的testcase。
任何失败可能由以下情况导致:
1.应用程序错误
2.脚本错误
假设是脚本的错误,可能的原因如下:
1.逻辑错误
2.产品行为的改变导致脚本错误(因此,脚本需要被更新)
3.或者,应用程序的GUI发生了变化,这意味着你需要更新GUI的记录。
当一个自动工具录制GUI时,它主要通过该GUI特定的属性捕捉每个GUI对象,该属性在下一次自动执行时用来标识该GUI。
为了给你举例,让我考虑在一个典型的用户登录页中,有三个GUI实体。
1.用户名域
2.密码域
3.登录按钮
假设登录按钮有一个htmlid=login,silktest将会记录该GUI为HTMLPushButton,其id属性等于login(该文本标题可能根据button的不同而变化,比如:”Log in”)
如果已经决定将该按钮的标题改成”Sign In”,而不改变htmlid属性,这种情况下,silktest还是能够正确地回放该GUI的自动脚本。
但是万一,在下一个构建中,开发人员保持该按钮的标题名,但是改变其html id为”signin”,silktest将无法认出该按钮,即使对于用户来说看上去什么也没有改变。
这就是大部分自动测试工具工作的基本原理。
85. 我无法简单的使用"DialogBox (" ").Close ()" 来关闭对话框。。。
在对话框上有一个按钮,一点,就会弹出第二个BrowserChild 。这个窗口没有一个常规的工具栏,它实际上是有一段Javascript 函数(openWindow) 打开的。由于某些原因,我不能简单的用"DialogBox (" ").Close ()" 来关闭它。
事实上,这依赖于第二个窗口是如何申明的。
在浏览器上,有一个弹出窗口,是用 JavaScript 做的,它没有包含任何浏览器的元素(没有工具栏,没有状态栏,没有位置,等等)。所以呢, silktest 将该窗口认为是对话框,但是直接申明它为对话框的时候又会导致失败。因为,它确实是个浏览器窗口。所以,我决定让 silktest 申明它为对话框,通常是如下的形式:
[code]
[-] window DialogBox DBCreateOffer
[ ] tag "Requisition Create?Edit"
[-] window BrowserChild BCCreateOffer
[ ] tag "Create Offer"
[ ] parent "CustomBrowser"
[/code]
然后,我修改 Silktest 自动生成的声明,然后让 BrowserChild 成为对话框的一部分:
[code]
[-] window DialogBox DBCreateOffer
[ ] tag "Requisition Create?Edit *"
[-] BrowserChild BCCreateOffer
[ ] tag "Create Offer"
[/code]
现在,我就可以直接通过调用 DBCreateOffer.Close() 来关闭它了。
87. 选择 ListBox 中 Item 的时候报错
SilkTest 从一个ListBox (JavaJFCListBox )中选择item 的时候报如下的错误
[ ] *** Error: Control is not responding
[ ] Occurred in Select
[ ] Called from LetterEditTool at FabEditorScript.t(1060)
但是有的时候执行却不会报错,有人能给点帮助么?
答:
这是一个catch-all 错误信息,一般是由Select( ) 尝试选取ListBox ,TreeView ,ListView 等控件中的项目时出现的。解决这个问题,可以在导致错误的那一行前面加上下面这行代码:
Agent.SetOption(OPT_VERIFY_RESPONDING, FALSE)
88. 要测试的GUI 上面有一个Cancel 按钮,它的热键是Alt-c
问:在一个待测GUI 上有一个Cancel 按钮,它的热键是Alt-c 和Alt-C (大小写都支持),手工测试的时候,这两组热键都能工作。
但是在自动测试的时候,TypeKeys ("") 可以工作,而TypeKeys ("") 却不能工作,我还尝试了下列代码
Presskeys ("")
TypeKeys ("")
ReleaseKeys ("")
和
Presskeys ("")
TypeKeys ("")
ReleaseKeys ("")
仍然不能工作,有人能帮忙么?
答:如果你的应用是标准的,并且热键被很好的定义了。那么理想情况下,"") 和 ("" 都应该能够工作。不过,看来你的情况不是这样的,那么请尝试下面的工作。
SilkTest 提供了模拟一组键被同时按下的功能,你可以通过角括号和连字符的组合来实现,请尝试下面的代码:
("")
不是 TypeKeys ("")
不是TypeKeys ("")
不是TypeKeys ("")
也不是
TypeKeys ("")
TypeKeys ("")
解决了,不过当CapsLock 没有启用的时候,只有TypeKeys ("") 能够工作。如果我手动将CapsLock 启用,然后执行[TypeKeys ("")] ,并不能work 。
90. 有人知道如何在silktest中转义空格么?
例如,我有一个可执行文件,位于C:/Program Files/xyz/abc.exe
我现在需要将'Program Files'中的空格转义,该如何做?
答案:
首先,你可以使用短型路径,例如:C:/Progr~1/xyz/abc.exe
其次,你可以用引号来处理空格,例如:
string sCmdLine = "C:/Program Files/xyz/abc.exe"
Sys_Execute(sCmdLine)
SilkTest Q&A 9的更多相关文章
- SilkTest Q&A 2
Q11:SilkTest中有没有计算web页面上单词数量的函数? A11:你可以使用Clipboard函数.使用Ctrl+a和Ctrl+c,然后解析string的list. Q12:silktest的 ...
- SilkTest Q&A 12
111. 谁能告诉我,正在执行的SilkTest的log是存放在哪里? 答案1: 用下面的命令可以导出文本格式的log "c:/program files/segue/silktest/pa ...
- SilkTest Q&A 13
Q121 :我想要测试 windows2003 上的 remote 应用,但是每次都得到如下的错误 我想要测试 windows2003 上的 remote 应用,但是每次都得到如下的错误: " ...
- SilkTest Q&A 7
Q61.有一个用Dotnet开发的应用,有1000个为测它而录制的case,一直都运行的很正常,直到有一天… 有人改变了该应用命名空间,由于现在有一个新的window或是panel出现,所以测试脚本一 ...
- 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 ...
- SilkTest Q&A 4
Q31.如何在inc文件里面写函数? A31.在你在inc文件(例如demo.inc)里写好函数以后,你需要使用Use path/Use file来指定指定它们. 在SilkTest中->Opt ...
随机推荐
- mvc中的几个数据传递
1.ViewData对象 ViewBagData是一种字典集合数据同时属于视图基类和控制器基类的属性. 实例: //控制器 public class HomeController:Controller ...
- QT5.6所开放的7个新模块(图表,虚拟键盘,性能分析,静态分析,测试正好,2D渲染)
The modules newly available to open source users are: Qt Charts Qt Data Visualization Qt Virtual Key ...
- PHP脚本实现凯撒加(解)密
原文:PHP脚本实现凯撒加(解)密 今天在看某ctf时候遇到一题凯撒加密的题,然后看到write up里有这样一句 顿时感觉这题目有点坑啊,这要不写个脚本来跑要推到啥时候啊,于是又了本文: <? ...
- linux下java窗口,正确显示中文
Tip1 1.在 JAVA_HOME/jre/lib/fonts/ 下建立个目录 fallback 2.在 fallback 里弄个中文字体最简单ln一下就好了 比如: ln -s /usr/shar ...
- 设计模式(八)装饰器模式Decorator(结构型)
设计模式(八)装饰器模式Decorator(结构型) 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法 ...
- libvirt(virsh命令介绍)
有了virt-install是安装虚拟机的命令,当然也需要一个管理虚拟机的命令了,那就是virsh. virsh命令使用 virsh <command> <domain-id> ...
- iOS开发之iOS7设置状态栏字体颜色
应用中登陆界面颜色较浅,状态栏字体颜色为黑色,跳转到主界面之后,界面颜色较深,状态栏颜色随之变成白色.但是再重新返回登陆界面后,状态栏字体颜色并没有改成黑色,特别别扭. plist文件里将View c ...
- Jquery学习笔记: attr和 prop的区别,以及为html标签自定义属性
一.自定义html标签属性 对于html文件中的html标签,可以自定义属性,如: <a href="#" id="link1" action=" ...
- linux i2c驱动架构-dm368 i2c驱动分析
linux i2c驱动架构-dm368 i2c驱动分析 在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinc ...
- BZOJ 1179: [Apio2009]Atm( tarjan + 最短路 )
对于一个强连通分量, 一定是整个走或者不走, 所以tarjan缩点然后跑dijkstra. ------------------------------------------------------ ...