51Testing软件测试论坛

标题: QTP 获取不到页面中的控件(对象),虽然网上有很多的方法,本人都尝试过了,还是获取不到 [打印本页]

作者: s154098121    时间: 2010-1-21 18:38
标题: QTP 获取不到页面中的控件(对象),虽然网上有很多的方法,本人都尝试过了,还是获取不到
问题简述:
        QTP 获取不到页面中的控件(对象),虽然网上有很多的方法,本人都尝试过了,还是获取不到.(描述性编程,IE的加载项.....)
问题如下:
        这个页面,通过Object Sky 获取"处理方式"的下拉框是可以获取到的(图1,2),
        当选择一个下拉框中一个值时,会在处理方式及处理意见中插入一个页面(图3)
        问题:在弹出这个页面之后,在通过Object Sky获取"SP责任方"的下拉框,就获取不到了,只能获取如下,就如(图4)
        这样在录制的时候,就录不到操作"SP责任方"中的数据......

        看了开发的程序,"处理方式"中的值,是通过数据库中获取的,选择其中一个值时,通过查询一个数据表获取到插入页面的url,然后通过Ajax方式插入到中间.

        另外通过描述性编程也试过了.
        Browser("Browser").Page("name:=pickup_window_201001080003561","url:=http://10.110.0.205:6600/workflow/wf111.go?method=init").
                WebList("t_wf_dcasedispatchmsg.sp_duty").Click
        报错如下:
        The "t_wf_dcasedispatchmsg.sp_duty" object was not found in the Object Repository.
                Check the Object Repository to confirm that the object exists or to find the correct name for the object.

        用下列语句:
        Browser("Browser").Page("name:=pickup_window_201001080003561","url:=http://10.110.0.205:6600/workflow/wf111.go?method=init").
                WebList("name:=t_wf_dcasedispatchmsg.sp_duty").Click
        报错:
        Cannot find the "[ WebList ]" object's parent "[ Page ]" (class Page). Verify that parent properties match an object currently displayed in                 your application.

        还请大家,版主  帮我看看 如何解决此问题?

[ 本帖最后由 s154098121 于 2010-1-21 18:41 编辑 ]
作者: ls_721521    时间: 2010-1-22 09:30
首先page层用描述性后WebList层就业要用描述性了。。
你后面的那个句url属性里有个?,得用转义字符吧,改成
Browser("Browser").Page("name:=pickup_window_201001080003561","url:=http://10.110.0.205:6600/workflow/wf111.go\?method=init").
                WebList("name:=t_wf_dcasedispatchmsg.sp_duty").Click

试试。。。
作者: s154098121    时间: 2010-1-22 10:10
标题: 对 ls_721521 答复
ls_721521: 还是不行啊
还是报一样的错
Cannot find the "[ WebList ]" object's parent "[ Page ]" (class Page). Verify that parent properties match an object currently displayed in  your application.
作者: 风雪夜归人    时间: 2010-1-22 10:43
Browser("Browser").Page("name:=pickup_window_201001080003561","url:=http://10.110.0.205:6600/workflow/wf111.go?method=init").
                WebList("name:=t_wf_dcasedispatchmsg.sp_duty").Click

试试这个: Browser("Browser").Page(":=").WebList("name:=t_wf_dcasedispatchmsg.sp_duty").Click

或者打开对象库,直接添加这个weblist进去用
Browser("xx").Page("xxx").WebList("xx").select "xxx"
作者: ls_721521    时间: 2010-1-22 10:48
标题: 回复 3# 的帖子
一般page层的属性都相同的,你其他语句的page页是怎么写,这个就怎么写呗。。

Browser("Browser").Page("name:=pickup_window.*","url:=http://10.110.0.205:6600.*").
                WebList("name:=t_wf_dcasedispatchmsg.sp_duty").Click

这个也试试,如果不行就再找一下其他的属性
作者: s154098121    时间: 2010-1-22 15:28
标题: to 解答的朋友
两位提供的方法都试过了,还是不行.....

为什么通过描述编程还不可以识别呢,认为是QTP终究没有识别到对象,就如(图4),Object Sky 它指识别到了调用的页面,往下就识别不到了,是否跟Ajax技术有关呢???
作者: s154098121    时间: 2010-1-22 16:15
下面的代码就是问题中所提到的,在选择下拉框中时将页面插入到中间...
我在下面的代码中添加了一个alert 语句,在页面调用后弹出对话框(图1),然后点击后,在识别就识别到了,回放也就成功了....
但是 ,本人不知道为什么这么操作而能使对象识别,因为将alert插入到其他地方时,还是识别不到对象....那位朋友知道原因,请告之.....


// 调用AJAX将处理页面加载到当前页面处理方式和处理意见之间
        var qryPacket = new AJAXPacket(initUrl,"处理页面");       
        //alert (qryPacket)   "如果在这里添加,则还是识别不到对象
        var subForm = document.forms[0];
        qryPacket.data.add("case_no", subForm.case_no.value.trim());
        core.ajax.sendPacketHtml(qryPacket,dispose);
       
        delete(qryPacket);
        // 设置表单提交URL
        var actionObj = document.all("actionUrl");
        alert ("test_test")    添加到这里就可以正确识别了~~~~
        if(actionObj!=null){
                document.forms[0].action = actionObj.value;
        }else{
                rdShowMessageDialog("该处理页面没有相关的处理路径,请检查!", 0);
作者: oliver.tang    时间: 2015-4-24 09:28
我一个登录页面,怎么才能判断是否登录成功呢?我使用判断两个页面中的两个对象是否存在(exit),可是,为什么都是说存在啊?




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