51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3218|回复: 6
打印 上一主题 下一主题

[求助] selenium java如何定位跳转页面的元素

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-11-20 17:53:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用java写了一个登陆用例,输入用户名和密码点击登陆按钮后登陆成功,然后就定位不到跳转页面的元素。登陆时跳转是原地跳转,handle是同一个;同时应该不是frame之间的跳转,而是通过js或Servlet验证后直接跳转到另外一个html。请问怎么解决啊???
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    擦汗
    2016-1-11 11:46
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]测试连长

    2#
    发表于 2015-11-22 11:41:39 | 只看该作者
    赞赞赞赞赞赞赞
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    3#
    发表于 2015-11-23 09:56:22 | 只看该作者
    是不是没有加上等待呢?还没捕捉到元素就结束了。。。。还有你确保你要抓取的元素的属性描述的对哦

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜你获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2015-11-23 11:24:50 | 只看该作者
    joykao 发表于 2015-11-23 09:56
    是不是没有加上等待呢?还没捕捉到元素就结束了。。。。还有你确保你要抓取的元素的属性描述的对哦

    我可以确认抓取的元素属性描述是正确的,因为我用driver.navigate().to()试过。那就我描述的这种情况,那个等待语句怎么写呢?我在百度上搜索的语句感觉不适合,他没用frame,handle又一样。。。
                       WebDriverWait wait = new WebDriverWait(driver, 70);
                        wait.until(new ExpectedCondition<Boolean>() {
                                public Boolean apply(WebDriver d){
                                   boolean loadcomplete = d.switchTo().frame("right_frame").findElement(By.xpath("//center/div[@class='welco']/img")).isDisplayed();
                                   return loadcomplete;
                               }
                           });
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2015-11-23 11:24:48 | 只看该作者
    joykao 发表于 2015-11-23 09:56
    是不是没有加上等待呢?还没捕捉到元素就结束了。。。。还有你确保你要抓取的元素的属性描述的对哦

    我可以确认抓取的元素属性描述是正确的,因为我用driver.navigate().to()试过。那就我描述的这种情况,那个等待语句怎么写呢?我在百度上搜索的语句感觉不适合,他没用frame,handle又一样。。。
                       WebDriverWait wait = new WebDriverWait(driver, 70);
                        wait.until(new ExpectedCondition<Boolean>() {
                                public Boolean apply(WebDriver d){
                                   boolean loadcomplete = d.switchTo().frame("right_frame").findElement(By.xpath("//center/div[@class='welco']/img")).isDisplayed();
                                   return loadcomplete;
                               }
                           });
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    6#
    发表于 2015-11-23 17:50:24 | 只看该作者
    zym01 发表于 2015-11-23 11:24
    我可以确认抓取的元素属性描述是正确的,因为我用driver.navigate().to()试过。那就我描述的这种情况,那 ...

    等待有显示等待和隐式等待等等,当然你已经用了一种,还有一种
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    当然你也可以用Thread.sleep(3000)是试试,不知道是不是有请求没加载完
    如果你确定没有描述错元素属性的话,因为我不知道你driver.navigate().to()可以对元素做什么?我的理解是只能帮你去打开页面,而且你又说元素不在新打开的页面上,而且也没有用多frame,个人觉得十分奇怪,你可以把元素的HTML代码贴出来看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2015-11-25 09:59:38 | 只看该作者
    joykao 发表于 2015-11-23 17:50
    等待有显示等待和隐式等待等等,当然你已经用了一种,还有一种
    driver.manage().timeouts().implicitlyW ...

    我试过用driver.manage().timeouts().implicitlyWait(120,TimeUnit.SECONDS);和sleep()都不行,你看下代码吧!
    登陆页面html:
    <body>
            <div class="top">
                <div class="top_box">
                    <div class="logo"></div>
                    <div class="logo_right"></div>
                </div>
            </div>
            <div class="top_line"></div>
            <div class="banner">
                <div class="login_box">
                    <table width="100%" cellspacing="0" cellpadding="0" border="0">
                        <form action="call.login" name="loginform" method="post" id="signin-form"></form>
                            <tbody><tr>
                                <td class="title">&nbsp;</td>
                            </tr>
                            <tr>
                                <td class="login_text">用户名:</td>
                            </tr>
                            <tr>
                                <td><input type="text" placeholder="请输入用户名" onkeydown="keydown()" id="inputuser" class="login_input" name="username"></td>
                            </tr>
                            <tr>
                                <td class="login_text">密码:</td>
                            </tr>
                            <tr>
                                <td><input type="password" placeholder="请输入密码" onkeydown="keydown()" class="login_input" name="password"></td>
                            </tr>
                            <tr>
                                <td><input type="button" value="登             录" class="login_button" name="loginbtn"></td>
                            </tr>
                                           
                     </tbody></table>
                    </div>
                </div>
                <div class="info">版权所有:XXX </div>
                <!-- Placed at the end of the document so the pages load faster -->
                <script type="text/javascript" src="3rd/jquery.min.js"></script>
                <script type="text/javascript" src="3rd/jquery.form.js"></script>
                <script type="text/javascript">
                function keydown(){
                        if(event.keyCode == 13){
                                event.returnValue=false;
                                event.cancel = true;
                                loginform.loginbtn.click();
                        }
                }
                
                $(function(){
                    $('#inputuser').focus();
                                   
                    $('.login_button').on('click',function(){
                         $("#signin-form").ajaxSubmit({
                             success:function(data){
                                data = JSON.parse(data);
                                if (data.success) {
                                    window.location.href = "main.html";
                                } else {
                                    alert(data.message);
                                    $('#inputuser').focus();
                                    $('#inputuser').select();
                                }
                               
                             }
                         });
                    })
                   
                   
                });

                </script>
    登陆成功跳转页面html:
    <body style="margin:0px;height:100%;overflow:hidden;background:#fff">
    <iframe frameborder="0" scrolling="no" style="height:100%;width:100%" src="mas/home/index.html"></iframe>
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-12 09:14 , Processed in 0.071619 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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