51Testing软件测试论坛

标题: 页面中隐藏按钮对象的识别 [打印本页]

作者: vprince    时间: 2008-9-11 15:35
标题: 页面中隐藏按钮对象的识别
目前有一个页面,页面中看不到[退回]这个按钮,但是在QTP的识别过程中,可以识别到这个按钮,我觉得这个按钮只是隐藏了而已,
因为用
if  Browser(++++++).Page(+++++++).WebButton("退回").Exist then
    msgbox "退回按钮存在"
    else
    msgbox "退回按钮不存在"
end if
最后它弹出的是"退回按钮存在"

甚至在QTP中执行:Browser(++++++).Page(+++++++).WebButton("退回").click,居然会弹出对话框,可以进行业务操作,可是手工操作的话,在该页面是不可能操作该按钮的,因为根本看不到该按钮.
各位大虾,有没有什么方法推荐,让QTP只识别页面上看得到的按钮,因为我想验证该按钮不存在,实际上页面上是不存在的,但QTP识别出来就是存在,所以产生错误.
在此先谢各位热心帮助.
作者: 假装不在    时间: 2008-9-11 15:47
加多个browser().page().webbutton().getroproperty("visible")的判断下去
作者: vprince    时间: 2008-9-11 16:07
感谢你的回答,利用visible属性进行判断,其实我原来用description对象的时候也用过,
If   Browser("+++++++").Page("++++++").WebButton("name:=退回").GetROProperty("visible")=true  Then
        msgbox "错误,按钮存在"
        else
        msgbox "正确,按钮不存在"
End If
这个判断结果为true,所以还是有问题,因为我查看了一下对象属性,运行时该对象没有visible属性,但对象库中有visible,所以用getRoPropertity好像不行.
作者: vprince    时间: 2008-9-11 16:11
补充:用
msgbox  Browser("++++").Page("++++").WebButton("name:=退回").GetROProperty("visible")

弹了来的是true.
见鬼了。
作者: rcpp    时间: 2008-9-11 16:53
把那个隐藏按钮的html代码贴出来吧
作者: vprince    时间: 2008-9-11 17:35
HTML码如下,但是查找不到按钮的名称,即使页面上有的按钮,也查找不到..
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />



<link href="/oa/styles/css/ext-all.v0.8.0.gzcss" rel="stylesheet" type="text/css" />
<script src="/oa/scripts/ext-all.v0.8.0.gzjs" type="text/javascript"></script>
<script type="text/javascript">
var ctx='/oa';
Ext.BLANK_IMAGE_URL = ctx+'/styles/images/default/s.v0.8.0.gif';
var SYS_USER={id:'1116'};
</script>





<title>主办处室不受理</title>
<link href="/oa/styles/css/workflow.v1.0.1.css" rel="stylesheet"
        type="text/css" />
</head>
<body>
<div id="toolbar">
<div id="container">
<div id="menu"></div>
</div>
<div id="flow-img"  class="x-toolbar"
        style="width: 100%; text-align: center; display: none"></div>
<form action="/oa/workflow/flow.do" id="pForm" method="POST"
        enctype="multipart/form-data" class="x-toolbar">
       
                <div id="flow">
                <table>
                        <tr>
                                <th width="10%">
                                <label for="rwlx"><h1>请选择任务流向: </h1></label>
                                </th>
                                <td>
                                <div id="flowTranstion" style="display: none">
                                        <input type="radio" name="next" id="next6176611"
                                                value="6176611">
                                        <a href="#" id="a6176611">送归档</a>
                                       
                                               
                                               
                                               
                                               
                                               
                                               
                                        <xml xmltype="addressbook" processName="审批流程" processType="0" taskName="主办处室不受理" transitionName="送归档" bindId="6176611"><addressbook type="0" onclick="banjieHandle">
                        <default>       
                        <VAR>O_%564%G_100064</VAR>
                        </default>
                        <filter/></addressbook></xml>
                                </div>
                                </td>
                        </tr>
                </table>
                </div>
       
        <input id="dzb" type="hidden">
        <input name="dzb_h" id="dzb_h" type="hidden">
        <input name="transferrer" id="transferrer" type="hidden">
        <input name="sendType" id="sendType" type="hidden">
        <input id="method" name="method" type="hidden" value="endTask">
        <input id="taskId" name="taskId" type="hidden" value="3185825">
        <input id="otherVariables" name="otherVariables" type="hidden">
        <input id="formBody" name="formBody" type="hidden">
</form></div>
<div id="form-body">
<div id="workflow-form-basic">
<div id="workflow-form-title">
<h1>主办处室不受理</h1>
</div>
<form id="oform"></form>
<div id="attach">

       
       
       
       
       




<div id="NTKOATTACH_OCX_CONTAINER">
</div>
<script type="text/javascript">
var attachesOcx = Ext.oa.AttachesOcx({id:'3185790',url:'',type:'workflow',container: 'NTKOATTACH_OCX_CONTAINER',
        finalcall: '',width: '716',height:'150',readonly:'-1',noHeader:false});
//Ext.onReady(attachesOcx.init, attachesOcx, true);
</script>
<script language="JScript" for="NTKOATTACH_OCX"
        event="AfterSaveToURL(retStr,ErrCode)">
        //保存到URL之后触发该事件

        if(attachesOcx){
                attachesOcx.afterSave(retStr,ErrCode);
        }
</script>


</div>
</div>
<div id="east">
<div id="lcsx"><!--流程属性-->
<form id="common"><script
        src="/oa/scripts/workflow/common_function.js" type="text/javascript"></script>
<table width="100%">
        <tbody>
                <tr>
                        <th width="35%" style="text-align: right"><label
                                for="common_next_step_due">下环节办理期限:</label></th>
                        <td><input type="text" id="common_next_step_due"
                                name="common_next_step_due" style="width: 153px" /></td>
                </tr>
                <tr>
                        <th style="text-align: right"><label for="common_total_due">总办理期限:</label></th>
                        <td><input type="text" id="common_total_due"
                                name="common_total_due" style="width: 153px" /></td>
                </tr>
                <tr>
                        <th valign="top" style="text-align: right"><label
                                for="common_remark">本环节备注:</label></th>
                        <td><textarea id="common_remark"
                                name="common_remark" style="width: 170px" rows="2"></textarea></td>
                </tr>
                <tr>
                        <th style="text-align: right"><label for="common_send_sms">是否发短信:</label></th>
                        <td><input type="radio" id="common_send_sms_0" value="0"
                                name="common_send_sms" onclick="setContent()" checked="true" />否&nbsp;&nbsp;&nbsp;&nbsp;<input
                                type="radio" id="common_send_sms_1" value="1" name="common_send_sms"
                                onclick="setContent()" />是</td>
                </tr>
                <tr>
                        <th style="text-align: right"><label for="common_sms_receipt">是否短信回执:</label></th>
                        <td><input type="radio" id="common_sms_receipt_0" value="0"
                                name="common_sms_receipt" checked />否&nbsp;&nbsp;&nbsp;&nbsp;<input
                                type="radio" id="common_sms_receipt_1" value="1"
                                name="common_sms_receipt" />是</td>
                </tr>
                <tr>
                        <th style="text-align: right"><label for="common_sms_type">短信类型:</label></th>
                        <td><input type="text" id="common_sms_type"
                                name="common_sms_type" style="width: 153px" /></td>
                </tr>
                <tr>
                        <th valign="top" style="text-align: right"><label
                                for="common_sms_content">短信内容:</label></th>
                        <td><textarea id="common_sms_content"
                                name="common_sms_content" style="width: 170px" rows="2"></textarea></td>
                </tr>
        </tbody>
</table>
</form>
</div>
<div id="xglc-grid"></div>
<div id="xgwj-grid"></div>
</div>
</body>

<div id="load" class="load">
<div id="loading">
        <div class="loading-indicator">载入中...</div>
</div>
</div>
<script type="text/javascript">
        Event.observe(window, 'load',
      function() { $('load').remove()}
    );
</script>

<script type="text/javascript">
        SEND_TYPE_NORMAL = 0;
        SEND_TYPE_BYTRANSFER = 2;
        SEND_TYPE_SEQUENCE = 1;

        Ext.namespace('OA.workflow');
       
        OA.workflow.config = {
                justBegin: false,
                taskName: '主办处室不受理',
                nodeName: '主办处室不受理',
                processName: '审批流程',
                taskId: '3185825',
                flowType: '1',
                flowid: '3185790',
                createDate: '2008-09-10',
                createUser: '7177',
                createOrg: '行政服务大厅',
                createOrgId: '1321',
                userId: '1116',
                signed: true,
                rejectable: true,
                sendType: null,
                readOnly: ''
        };
作者: jifeng    时间: 2008-9-11 21:01
看看这个按钮的哪个属性导致它的隐藏,利用这个属性去判断。

因为他知识不可见,所以用Exist去按段肯定是不行的。
作者: vprince    时间: 2008-9-12 10:13
这个按钮都看不到,用对象探测器探不到呢,如何查看哪个属性导致它的隐藏呢?问开发人员?
在别的页面有这个按钮, 并显示出来了,查看了一下该按钮有一个visible属性。
作者: hsjzfling    时间: 2008-9-12 12:13
最好是去问开发吧,你给的html代码中是没有任何button的。

有可能是javascript代码动态生成了个button,但是div所在的层style.display 为none
这样不能直接在页面上去view source,可以开启update run mode更新下active窗口中的对象,然后在这里view source,能看到javascript动态生成的对象。
作者: YangMay    时间: 2010-11-25 16:26
最后问题是怎么解决的呢?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2