新的问题,望各位帮忙解答
由于右件菜单是可以由用户自定义的,那么我要怎么通过TSL或者其他函数去处理才能让WR自己根据菜单项的名称去选择要操作的菜单啊?我感觉下面几个函数是可以做到"获取COUNT,利用FOR循环查找菜单项名称(contents),获取菜单项位置(position),再利用菜单项操作的".
但是看帮助文档里的说明不大明白,其中的参数menu是指哪个?
menu_get_item ( menu, item_number, out_contents );
menu_get_item_num ( menu, item, out_position );
menu_get_items_count;
这写函数的使用例子最好可以给个例子,帮助文档里的不详细. menu是指的菜单的逻辑名称。
# 无标题 - 记事本
set_window ("无标题 - 记事本", 2);
menu_get_item("文件(F)",0,value);
menu_get_item_num("文件(F)","保存(S) Ctrl+S",value); 不好意思,没看清是你说的是右键菜单。 WR对右键菜单的支持并不好,在我实际录制项目的过程中都是尽量避免使用右键菜单,因为录制出来的脚本都是把右键菜单映射为object控件,并通过鼠标坐标点击相应值。也许可以通过menu的一些函数来识别,但近期较忙没有时间做,很抱歉sdlkfj7
在帮助中说menu就是菜单的逻辑名,录制记事本中右键菜单点中“粘贴”的脚本很简单:menu_select_item ("粘贴(P)");
WR在这里就是把“粘贴”认为是菜单栏上的一个按钮了 感谢各位解答,我这边的实际情况是这样的,例如 刷新 的右键菜单可能是在第一位,也可能是在最后一位,而GUI里识别到的右键菜单是这样的描述是这样的
{
class: menu_item,
parent: none,
position: 6
}
,但根据这个GUI的描述,它只能识别右键菜单中第6位的菜单项,但是变化后就无法正确操作到该菜单项对象了. 我考虑的是不要根据POSITION的位置来识别并操作对象,我希望的是根据菜单项的 名称 来操作,例如我在菜单里找 名字 为”新建”的菜单项,然好再操作该菜单,这样的话就可以忽略自定义菜单对脚本正确运行的影响了. 根据上面所说的,我考虑过一下几种方法,但不知道WIRNUNNER不经过扩展的话(不使用DLL和句柄操作)能不能实现:
方法1:
从POSITONG 0 开始遍历,用menu_get_desc ( "{class: menu_item,index: "& i &"}", oblig, optional, "index", out_desc );的某些属性来获取其名字(例如:"刷新"等),如果 "获取的名字" = "要操作的菜单项的名称(如:刷新)" 则得到其POSITION,再通过POSITION操作.
方法2:
直接识别弹出的右键菜单窗口,然后通过FIND TEXT来获取 所要操作的菜单项名字 的位置,然后利用CLICK来操作.
以上方法不知道WINRUNNER能不能在不作扩展的情况下能不能实现. 原帖由 dionysus 于 2007-2-6 22:12 发表
WR对右键菜单的支持并不好,在我实际录制项目的过程中都是尽量避免使用右键菜单,因为录制出来的脚本都是把右键菜单映射为object控件,并通过鼠标坐标点击相应值。也许可以通过menu的一些函数来识别,但近期较忙 ...
没错,我录制的右键菜单的GUI描述和你的不同,你的应该是获取到了该右键菜单的LABEL属性,没猜错的话是下面的描述
{
class: menu_item,
label: "粘贴(P)",
parent: none
}
而我获取到的这个右键菜单比较特别
item_6:
{
class: menu_item,
parent: none,
position: 6
}
我层试图用
menu_get_desc来获取LABEL属性值,但是却不能获取.
正因为该菜单没有或者不能识别LABEL属性, wirunner所以才使用了POSITION来辨认. 你直接在gui map文件中用label替代position属性看看能否回放成功? 原帖由 dionysus 于 2007-2-8 16:00 发表
你直接在gui map文件中用label替代position属性看看能否回放成功?
是个好的建议,不过还是无法回放
页:
[1]