51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

selenium能定位到iframe中元素,但是不能执行click等操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-3-25 11:46:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

环境:selenium-2.53.0 + java + 火狐浏览器(45.0.1.5918)

测试网站:http://niu.xunlei.com/

问题描述:元素是显示状态,也能定位到(在iframe中任意元素,如登陆的button),但是不能操作(click等)

代码如下:

navigation.to("http://niu.xunlei.com/");
mainWindow.switchTo().frame("loginIframe");

List<WebElement> element = mainWindow.findElements(By.tagName("a"));
for(WebElement e:element){
System.out.println(e.getAttribute("id"));
}

System.out.println("button   " + mainWindow.findElement(By.id("al_submit")).getRect());
System.out.println("button   " + mainWindow.findElement(By.id("al_submit")).getSize());
System.out.println("button   " + mainWindow.findElement(By.id("al_submit")).isDisplayed());
System.out.println("button   " + mainWindow.findElement(By.id("al_submit")).isEnabled());
mainWindow.findElement(By.id("al_submit")).click(); -- 报异常org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with Command duration or timeout

加打印信息如下:

al_tab
ml_tab


al_submit
ml_gc


pl_gc


ml_submit


turnRegister
tl_arrow
mr_tab
ar_tab
pr_tab
mr_submit
ar_submit
pr_gc


pr_ccb
pr_submit
pr_finish
pr_pass
turnAccountLogin
turnMobileLogin
button   org.openqa.selenium.Rectangle@0
button   (0, 0)
button   false
button   true

有人碰到过类似的问题吗,应该怎样修改?(现在iframe中标签元素都能获取到信息,但是不能执行sendkeys、click等操作)?



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    擦汗
    2020-8-4 11:02
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2016-3-25 11:59:38 | 只看该作者
    鼠标移动接触点有问题,事件不支持click.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2016-3-25 12:57:05 | 只看该作者
    fhhh_eyou 发表于 2016-3-25 11:59
    鼠标移动接触点有问题,事件不支持click.

    支持click的,异常是找不到元素ElementNotVisibleException;鼠标移动接触点是什么意思,不太懂,请指导一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2016-3-25 14:41:41 | 只看该作者
    看这报错 你可能找到了一个重名的元素  但是无法操作,for循环过滤一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2016-3-25 15:05:35 | 只看该作者
    看哈中间还有没有frame这些 都要先执行找到这些元素 再在这个元素基础上找你要的 比如:  WebElement fram=driver.findElement(By.xpath("/html/body/div[3]/div/div/form[1]"));
              fram.findElement(By.xpath("/html/body/div[9]/div[2]/ul/li[9]"));

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2016-3-25 16:09:29 | 只看该作者
    river891155 发表于 2016-3-25 14:41
    看这报错 你可能找到了一个重名的元素  但是无法操作,for循环过滤一下

    没有重复,我用element.get(3).click();这样指定元素也不行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2016-3-25 16:23:42 | 只看该作者
    找到原因了,是页面里面有 两个 ID 为 loginIframe 的 iframe!(第一个是隐藏的)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2016-3-25 17:35:15 | 只看该作者
    tarooops 发表于 2016-3-25 15:05
    看哈中间还有没有frame这些 都要先执行找到这些元素 再在这个元素基础上找你要的 比如:  WebElement fram= ...

    还有一个id名一样的frame,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2016-3-25 18:20:39 | 只看该作者
    naiuty13 发表于 2016-3-25 16:09
    没有重复,我用element.get(3).click();这样指定元素也不行

    记着这个报错 大多是这问题  我也经常遇到
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 06:07 , Processed in 0.066133 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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