51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3638|回复: 8
打印 上一主题 下一主题

Selenium关于模式对话框操作求解、求解!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-11-7 12:56:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.点击一个页面元素后打开(这个页面点击【新建任务】button),这个页面对应的html脚本如下:
<button id="opene_create" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary ui-state-hover" role="button" aria-disabled="false">
<span class="ui-button-icon-primary ui-icon ui-icon-newwin"></span>
<span class="ui-button-text">新建任务</span>
</button>

2.出现一个模式对框,如图1所示(这个对话框还分几个菜单,如左边所示)。通过查看上面的“id="opene_create",查找到opene_create的function,脚本如下,该窗口应该为模式对话框,并跳转到page0.php页面。
        $("#opene_create").click(function(){
                        var ip=$("#ipp"+ipm).val();
                        diag = new Dialog();
                        diag.Modal = true;
                        diag.Width = 600;
                        diag.Height = 500;
                        diag.Title = "新建任务";
                        diag.URL = "page0.php?username=<?=$username?>&ip="+ip;
                        diag.show();
                });       

3。在这个对话框上,左边菜单“任务基本信息”输入后,点击【一下步】,进入下一个菜单的输入,如图2所示,这时对话框左边菜单的“高级设定”突出显示。在上一部的“任务基本信息”菜单中点击【下一步】按钮在page0.php页面查得脚本如下:
<div id="error_show" class="ui-state-default ui-corner-all" style="color:#39F; float:left; line-height:30px; text-align:center; width:300px; height:35px; margin:15px auto 5px 15px ; display:none;"></div>
        <div style="float:right; margin-right:25px !important; margin:15px auto 5px 15px ; ">
                <button style="width:80px;" id="form_xyb">下一步</button>&nbsp;&nbsp;
                <button style="width:80px;" id="form_qx" />取消</button>
        </div>
4.通过【下一步】按钮的 id=form_xyb,查的处理的function()脚本如下:
$( "#form_xyb" ).click(function() {
var bit=$("#disk_bit").val();
var disk_length=$("#disk_length").val();
var disk_name=$("#disk_name").val();
var disk_path=$("#disk_path").val();
var disk_length=$("#disk_length").val();
var disk_num=$("#disk_num").val();
var disk_bit=$("#disk_bit").val();
var task_type=$("#task_type").val();
var disk_ip=$("#disk_ip").val();
var disk_ip_clientname=$("#disk_ip").find("option:selected").text();
var disk_mode=$('input:radio[name="disk_mode"]:checked').val();
// var zq_num=$("#zq_num").val();
// var fb_num=$("#fb_num").val();
if($("#fb_num").val()=="无限制")
{
var fb_num="";
}
else
{
var fb_num=$("#fb_num").val();
}
if($("#zq_num").val()=="无限制")
{
var zq_num="";
}
else
{
var zq_num=$("#zq_num").val();
}
if(task_type=="osback")
{
if(disk_ip == "sel")
{
alert("请选择需要备份的客户端!");return false;
}
if(fb_num == "" || fb_num == null || fb_num == "undefined" || fb_num==0)
{
alert("副本不能为零或空!");return false;
5、上面的每个菜单部分操作中的下一步, 都是同一个按钮id:id=form_xyb,都是调用了相同的$( "#form_xyb" ).click(function()功能。
6.到最后一步菜单项,如图3所示,其页面脚本如下:
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<div class="ui-dialog-buttonset">
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
<span class="ui-button-text">确定</span>
</button>
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
<span class="ui-button-text">取消</span>
</button>
</div>
7.点击【确定】按钮后,其值返回主页面,主页列表中显示该任务名及相关属性值。
在网上查到一篇关于模式窗口的处理,看了半天也没领会其意,不知道有什么更好比较好懂直接的方法?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2012-11-7 12:58:56 | 只看该作者
上面问题附属的图1、图2在这里。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2012-11-8 10:34:25 | 只看该作者
试过 selenium.selectWindow 或者driver.switchTo().window(handle)么?

如果是java 需要结合

Object[] a=wd.getWindowHandles().toArray();
wd.switchTo().window((String)a[a.length-1]);
以上代码为webdriver跳转到新弹出窗口。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-11-8 13:23:45 | 只看该作者
webdriver跳转确实是比较麻烦
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-11-8 21:28:29 | 只看该作者
三楼的,selenium.selectWindow 或者driver.switchTo().window(handle)----这个方法行不通,父窗口和弹出框所在页都是同一个handle。通过导航方法进入弹出框所在URL页,页操作不了。
---用窗口操作和操作modal dialog是两回事,网上查得modal dialog弹出框,其上的selenium的命令操作将失效,因为这种弹出框禁止其它的js运行。但webdriver不知道可以不,webdriver是直接命令跟浏览器提供的接口打交道,类似于手工操作,绕过了js这中间代理层。按原理来说,webdriver相对来说要好处理,但找不到方法。有高手吗
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2012-12-28 11:37:26 | 只看该作者
回复 5# zhongxinxu

我现在也遇到和你一样的问题  不知道你这个问题是怎么处理的   能告诉一下我吗    我的邮箱是zhongfuchao@hotmail.com    谢谢你
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2013-1-23 17:45:13 | 只看该作者
这个不是弹出页面,是图层,对于图层你需要定位到该图层就可以了。用selectFrame(String) 然后定位,在调试过程中,尽量用thread等待长一点。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2023-7-19 14:54
  • 签到天数: 266 天

    连续签到: 1 天

    [LV.8]测试军长

    8#
    发表于 2013-1-23 23:00:07 | 只看该作者
    顶一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2013-2-4 10:58:00 | 只看该作者
    问题描述太长了  可以简洁一点吗? 没心情看
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-7 18:38 , Processed in 0.076452 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表