QTP中对识别为WebElement的对象进行输入操作的一种解决办法

上一篇 / 下一篇  2009-09-25 17:06:24 / 个人分类:测试工具

QTP录制公告栏的时候,公告栏的“内容”无法被录制,“内容”被识别为webelement,在论坛上找到有战友对其描述为:

webelement,winobject,swfobject....这些都可以简单理解成底层元素与对象。
webelement它可以包括webedit,weblist,webbutton等等对象。简单的一个描述例子就是
1,.webelement("html tag:=Input","index:=0")  可以看出,它可以代替webedit的。
2,或者QTP某些没办法直接添加,或者SPY不出来的元素(web),例如一些特殊的节点,标签之类的,我们也可以使用webelement对它做操作,webelement("html tag:=div"),等等。

现在我要对“内容”进行输入操作,而WebElement只有click方法,是没有输入的方法的。

以下摘自某论坛文章
    考虑了实际中确实需要具有这种输入的支持(比如利用js生成的输入框,比较常见的是HTML编辑器输入框),就着手去解决。找到了一种解决办法:利用WshShell对象的SendKey方法来实现。在网上找了个html代码编辑器的实例,实现具体代码如下:

Option Explicit

Dim oWin32

Set oWin32 = CreateObject("wscrīpt.shell")

oWin32.Run("http://www.ewebeditor.net/demo/")

'由于html编辑器输入框没有找到稳定的属性用于识别,QTP录制时也没有录下对其操作,所以采用先将焦点移到其上一个对象,再按tab移动焦点到html编辑器上
Browser("title:=.*eWebEditor").page("title:=.*eWebEditor").WebList("name:=select","index:=0").FireEvent "onfocus"
'对IE窗口模拟键盘输入操作
 With oWin32
  .sendkeys "{TAB}"
  wait 2
  .sendkeys "abcefg"
 End With

    以上是我想到的一种实现方式,也是目前正在使用的方式。但只是一个不得已的解决方法——因为这种方式是很脆弱的,焦点变动,甚至一个Windows消息提示都可能使脚本失败。

这个解决方法就是找到页面的一个对象,焦点定位到该对象上,然后模拟键盘输入"abcefg". 发现此方法焦点很容易变动。模仿以上程序的脚本如下,发现问题是sendkeys的内容老窜到newtitle中.


Dim oWin32
Set oWin32 = CreateObject("wscript.shell")
oWin32.Run("http://daisy/common/siteAdmin/index.php?url=addNews")

Browser("管理界面").Page("管理界面").WebEdit("newsTitle").FireEvent "onfocus"

 With oWin32
  .sendkeys "{TAB}"
  wait 2
  .sendkeys "sometimes making the notice in Scrabble isnt as importment as what you leave on rack"
 End With

Browser("管理界面").Page("管理界面").WebEdit("newsTitle").Set DataTable("newsTitle", dtGlobalSheet)
Browser("登录").Page("管理界面").WebButton("确定").Click


TAG:

 

评分:0

我来说两句

Open Toolbar