51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2328|回复: 2
打印 上一主题 下一主题

【佳乐Selenium】DAY-2 iframe特殊处理和等待JS页面

[复制链接]
  • TA的每日心情
    开心
    2024-10-4 10:34
  • 签到天数: 1208 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2015-3-3 15:56:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    DAY-2
    写了两个超链接的 然后就遇到了问题 xpath无法定位
    发现我们的页面都是JS里面嵌套其他JS生成的

    一、当xpath无法定位时
    查看是否有iframe
    如果有iframe时 要先跳进iframe 然后在跳出

    定位到页面中frame标签:
    如果一个页面是一个html元素, 只有一个head, 一个body, 那么使用WebDriver.FindElement()查找页面中的任何一个元素都没有问题。但是,由于页面中<frame ... 的使用,使得一个原始的html页面中可以包含多个子html页面, 在这种情况下,使用WebDriver.FindElement()查找页面某个元素,如果元素是属于的html且非frame下的, 那么没有问题。若该元素是属于某个子的<frame ...下的,获得页面元素会失败的。所以也需要用到switchTo。
    代码如下:
    driver.switchTo().frame(driver.findElement(By.tagName("frame")));
    /*在frame中进行一系列操作后....*/
    driver.switchTo().defaultContent(); //返回之前的

    二、等待JS生成
    方法一
    Tread.sleep(1000);

    方法二 设置显式等待时长(一般针对某一个元素):
    new WebDriverWait(driver,5).until(new ExpectedCondition<Boolean>(){
    @Override
    public Boolean apply(WebDriver d) {
    if (d.findElement(By.xpath("/button[1]")).isDisplayed()) {
    return true;
    } else {
    return false;
    }
    }
    });

    driver.findElement(By.xpath("/button[1]")).click();

    方法三
    public boolean isExistWindow(String windowTitle){  
    boolean flag = false;
    Set<String> handles = driver.getWindowHandles();  
    for (String tmp : handles) {
        //跳入windows
        driver.switchTo().window(tmp);  
        if (driver.getTitle().equals(windowTitle)){
            flag = true;  
            break;
        }
    }
    return flag;
    }
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2015-3-30 20:34:10 | 只看该作者
    有人指导进步很快呀
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 21:49 , Processed in 0.062089 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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