51Testing软件测试论坛

标题: selenium能定位到iframe中元素,但是不能执行click等操作 [打印本页]

作者: naiuty13    时间: 2016-3-25 11:46
标题: selenium能定位到iframe中元素,但是不能执行click等操作

环境: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等操作)?




作者: fhhh_eyou    时间: 2016-3-25 11:59
鼠标移动接触点有问题,事件不支持click.
作者: naiuty13    时间: 2016-3-25 12:57
fhhh_eyou 发表于 2016-3-25 11:59
鼠标移动接触点有问题,事件不支持click.

支持click的,异常是找不到元素ElementNotVisibleException;鼠标移动接触点是什么意思,不太懂,请指导一下
作者: river891155    时间: 2016-3-25 14:41
看这报错 你可能找到了一个重名的元素  但是无法操作,for循环过滤一下
作者: tarooops    时间: 2016-3-25 15:05
看哈中间还有没有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]"));

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

没有重复,我用element.get(3).click();这样指定元素也不行
作者: naiuty13    时间: 2016-3-25 16:23
找到原因了,是页面里面有 两个 ID 为 loginIframe 的 iframe!(第一个是隐藏的)
作者: naiuty13    时间: 2016-3-25 17:35
tarooops 发表于 2016-3-25 15:05
看哈中间还有没有frame这些 都要先执行找到这些元素 再在这个元素基础上找你要的 比如:  WebElement fram= ...

还有一个id名一样的frame,谢谢
作者: river891155    时间: 2016-3-25 18:20
naiuty13 发表于 2016-3-25 16:09
没有重复,我用element.get(3).click();这样指定元素也不行

记着这个报错 大多是这问题  我也经常遇到




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2