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

在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")

'由于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

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

这个解决方法就是找到页面的一个对象,焦点定位到该对象上,然后模拟键盘输入"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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值