51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2445|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

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

使用道具 举报

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

    连续签到: 1 天

    [LV.10]测试总司令

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 13:54 , Processed in 0.071069 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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