51Testing软件测试论坛
标题:
QTP 文本框输入类型问题,求助大家
[打印本页]
作者:
king0964
时间:
2012-6-7 14:24
标题:
QTP 文本框输入类型问题,求助大家
比如一个文本框,只允许输入数字(其它类型不能输入)。怎么来判断字母和中文等其它类型是否可以输入?
方法1.直接参数化不同类型数据,进行取值比较,根据比较结果判断是否能输入其它类型。比如参数化字母(ab),如果文本框VALUE为空,就是不能输入;反之则能输入。但有个问题,网页不能输入字母,但用SET方法数据时,却能输入字母,造成结果不同。
方法2.模拟键盘,直接用sendkeys输入,但又出现一个问题,中文不能用sendkeys直接输入。
希望大家帮忙看看,怎么来写这个自动化?谢谢
作者:
SexyCat_1113
时间:
2012-6-7 21:10
没看明白,,,这个文本框是只允许输入数字类型,这个是开发决定的,不符合的时候给出提示或清除,,,为什么要你人为去判断其他是否能够输入?
作者:
king0964
时间:
2012-6-8 09:15
回复
2#
SexyCat_1113
比如一个手机号码文本框,手机号码只能输入11位数字,这是我们知道的,但开发不一定会去限制能否输入字母,所以要做这样的判断。
作者:
May_may
时间:
2012-6-8 09:28
这种情况应该是提交后进行验证弹出提示的吧
作者:
黑羽祭
时间:
2012-6-8 09:49
回复
1#
king0964
set输入后,将光标的焦点移开,看看刚刚输入的值还在该文本框中么?
作者:
king0964
时间:
2012-6-8 10:39
回复
4#
May_may
很多情况都是直接禁止输入字母的,检验不了
作者:
king0964
时间:
2012-6-8 10:41
回复
5#
黑羽祭
问题有描述了,如果用set,会产生跟实际情况不一致:实际情况已经禁止输入字母,但用set方法却能输入字母。
作者:
hsjzfling
时间:
2012-6-8 11:00
回复
1#
king0964
这种类型测试果断不能用set等事件的
测试方法和手工测试一样,激活控件焦点,然后噼里啪啦一阵狂敲键盘,敲完后看看控件中的文本与预期是否一致即可.
比如控件不允许输入字母,那么click文本区,然后用type或者sendkeys来敲a-z的字母,然后验证控件文本属性是否跟之前一样(依然为空),测中文也一样,先发送快捷组合键来切换输入法,然后就像手工打字一样发送字符串就行了,然后同样校验
作者:
Lemon_s
时间:
2012-6-8 11:28
用Set不行,Set是直接修改了运行对象中的属性value的值,触发不了控件本身的逻辑判断
如这样的:
<input id="111" onpaste= "return false; " onkeyup= "this.value=this.value.replace(/\D/g, ''); ">
首先要激活控件,否则无法触发控件中的事件。
然后用SendKeys发送字符。
楼上说的很对。
作者:
king0964
时间:
2012-6-8 17:31
本帖最后由 king0964 于 2012-6-8 17:36 编辑
回复
8#
hsjzfling
关键是怎么判断现在是中文输入法还是英文输入法?如果不知道什么输入法,怎么切换?
还有,这个切换的点,怎么判断?QTP判断不了输入是否字母或中文?
作者:
hsjzfling
时间:
2012-6-8 18:25
回复
10#
king0964
从测试初始状态,前置条件等方面去考虑吧,很多事情实际多尝试下可以找到方法的
作者:
shihw11
时间:
2012-6-9 09:51
首先在开发环节。
采用正则表达式来保证文本框中输入的是数字而不是其他数据类型。
关于规定输入的数据类型我认为应该是开发端所做的。
例如:验证输入的邮箱地址是否符合邮箱格式,代码如下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Question3
{
/**
* 输入一个Email地址,然后用正则表达式验证该Email地址是否正确。
*/
public static void main(String[] args)
{
System.out.println("请输入Email地址");
String str=SavitchIn.readLineWord();
String ema="^[a-zA-Z0-9_\\-]{1,}@[a-zA-Z0-9_\\-]{1,}\\.[a-zA-Z0-9_\\-.]{1,}$";
Pattern p=Pattern.compile(ema);
Matcher m=p.matcher(str);
if(m.matches())
{
System.out.println("Email地址合法");
}
else
{
System.out.println("Email地址非法");
}
}
}
如果想去验证文本框中输入的是否是数字,只需要将ema的值赋予为"[0-9]"
这样就够了,不足之处欢迎拍砖。
作者:
king0964
时间:
2012-6-12 09:41
回复
12#
shihw11
谢谢回复
不过这个也不行,这只是单据用正则表达式校验是否满足格式,并不能模拟输入。
要求很简单:对于一个只限制输入数字的文本框,手工测试分有效(数字)和无效(字母、中文和特殊字符等),用自动化模拟这几种类型,并自动返回那种类型不行,更好的是那种类型那个不行。我们报告不可能写,除了数字,其它类型不行,是不是都不行?或者只有那个类型不行?无法表现出来。
作者:
king0964
时间:
2012-6-12 11:59
回复
1#
king0964
有点麻烦,不过算解决了。
把参数化数据分为数字、字母、特殊字符和中文等,直接检验数据本身;并用两层次判断条件判断能否输入和数据正确性。
中英文输入法检验利用sendkeys "^ "(ctrl+space)
感谢大家的回复
作者:
shanfeng1419
时间:
2012-6-13 10:13
回复
14#
king0964
很好的问题。
“并用两层次判断条件判断能否输入和数据正确性。” 第一层判断能否输入,是怎么做的呢,不用set,用什么?
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2