说明下,其实三道题目都很简单,不是什么特别高深、特别新颖的东西。Web自动化做的多的朋友基本一看就知道怎么回事了。呵呵!
]KL^} NUE+SZ0
8u%cg9tuy%Mr0
《QTP智力大闯关之一:你们知道这效果用QTP是怎么实现的吗?》
`c/YbE&b0
答案:
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe"
Browser(":=").Page(":=").Sync
Browser(":=").Navigate "http://www.baidu.com/"
Browser(":=").Page(":=").WebEdit("name:=wd").Object.
insertAdjacentHTML"beforeBegin","我想在
百度的文本框里输入两行字,怎么输呢?想了半天,嗯,找到方法了,瞧!这不是吗?呵呵!"
*J/R~xds%a2k0
51Testing软件测试网6R {R`s&{"}Nj
他用的代码是:
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe"
Browser(":=").Page(":=").Sync
Browser(":=").Navigate "http://www.baidu.com/"
Browser(":=").Page(":=").WebEdit("name:=wd").Object.outerHTML= "<div>51testing的锋哥说百度一行太无聊我要来两行,云层就说既然你来两行我也要来两行,不是一个技术也能实现一样的效果哟!!</div>"
51Testing软件测试网.w*xN7vm4aF?@
OK,现在解释下 insertAdjacentHTML和 outerHTML 的不同。
insertAdjacentHTML : 在指定对象所在的HTML代码中动态插入一段代码,邻近的位置有四种:beforeBegin是插入到标签开始前,afterBegin是插入到标签开始标记之后,beforeEnd是插入到标签结束标记前,afterEnd是插入到标签结束标记后。 insertAdjacentHTML 的效果有点类似于 EmbedScript/RunScript,只不过一个是加HTML,一个是加JavaScript,而当在insertAdjacentHTML 中插入"<script>...</script>"其效果就接近于EmbedScript/RunScript了。
Y3k6VZ3H^051Testing软件测试网Lxus)k6Qu
outerHTML : 在指定对象所在的HTML代码中做Replace操作,也就是会把原有对象先删除,你可以“造”一个“克隆品”来替代它。
6H"p[+dNV^1T0
云层说的“不是一个技术也能实现一样的效果”指的就是它们。呵呵,云层,我这里替你爆料了,别怪我哟,我们可以交换友情链接哈!
4{B(jW4\)rk3dX0
$R1G0s3Hl)x
U0
这道题的关键技术还是借助强大的insertAdjacentHTML 。
答案:
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe"
Browser(":=").Page(":=").Sync
Setting.WebPackage("ReplayType") = 1
Browser(":=").Navigate "http://www.baidu.com/"
Browser(":=").Page(":=").Sync
Browser(":=").Page(":=").WebEdit("name:=wd").Click
Setting.WebPackage("ReplayType") = 2
Browser(":=").Page(":=").WebEdit("name:=wd").Set "p"
Browser(":=").Page(":=").WebTable("html tag:=TABLE").WebElement("html tag:=TD","index:=0").Object.insertAdjacentHTML"afterBegin", "今天锋哥无聊<br/>闲的蛋疼<br/>不是一般的疼<br/>云层跟我一样蛋疼<br/>好吧,看看谁更疼<br/><p/><p/><p/><p/><p/><p/><p/><p/>在哪里见过这么无聊的QTP<br/>今天锋哥无聊<br/>闲的蛋疼<br/>不是一般的疼<br/>云层跟我一样蛋疼<br/>好吧,看看谁更疼<br/><p/><p/><p/><p/><p/><p/><p/><p/>在哪里见过这么无聊的QTP<br/>今天锋哥无聊<br/>闲的蛋疼<br/>不是一般的疼<br/>云层跟我一样蛋疼<br/>好吧,看看谁更疼<br/><p/><p/><p/><p/><p/><p/><p/><p/>在哪里见过这么无聊的QTP"
|"A$MI,Y0
51Testing软件测试网~!Nt_!ylD
D0f
注意:因为百度搜索输入框的下拉框里的内容是Ajax动态载入的,所以要定位这个对象最好先外面嵌套一层WebTable对象,然后使用TD对象(Table Data),因为TD有好几个,并且我们想从第一个开始,所以必须指定 index:=0 来定位!
51Testing软件测试网c#zG$tc`
http://www.51testing.com/index.php?uid-35-action-viewspace-itemid-828609
答案:
单纯靠录制回放是解决不了的,关键在于checkbox的灰选状态要用到它的indeterminate属性。以下是代码:
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe"
Browser(":=").Page(":=").Sync
Browser(":=").Navigate "http://login.tmall.com/"
Browser(":=").Page(":=").Frame("micclass:=Frame").WebCheckBox("name:=longLogin").Object.indeterminate = True
51Testing软件测试网*XVxU2\$zP)Vf
好了,三道题目答案公布完毕,你们看,是不是非常简单呢? :)