51Testing软件测试论坛

标题: selenium 嵌套frame定位问题 [打印本页]

作者: 六月长青    时间: 2014-2-28 15:41
标题: selenium 嵌套frame定位问题
页面有三个frame:top,left,main。结构如下述代码所示。要定位到 left frame  应该如何操作?

[attach]89364[/attach]
  1. <html>
  2. <head><title>窗口应用案例</title></head>
  3. <frameset rows="30%,*" border="5">
  4.         <frame src="top.html" name="top"  />
  5.         <frameset cols="30%,*">
  6.                 <frame src="left.html"  name="left"/>
  7.                 <frame src="main.html" name="main"/>               
  8.         </frameset>        
  9. </frameset><noframes></noframes>
  10. </html>
复制代码
可以定位frame("top"),但是继续定位到frame("left")。则抛出异常NoSuchFrameException。
  1.                 driver.switchTo().frame("top");
  2.                 driver.findElement(By.name("message")).sendKeys("top");
复制代码
  1.                 driver.switchTo().defaultContent();
  2.                 driver.switchTo().frame("left");
复制代码

作者: maomao121    时间: 2014-3-1 05:44
试试看去掉driver.switchTo().defaultContent();
作者: 六月长青    时间: 2014-3-3 10:08
回复 2# maomao121


去掉也还是不行的。
作者: joykao    时间: 2014-3-3 14:43
和层级结构有关吗?top和left不在同一层级?
作者: maomao121    时间: 2014-3-4 06:49
要不在driver.switchTo().frame("left")之前, 先用find element定位一下第二个frameset,看看能不能定位到
作者: 六月长青    时间: 2014-3-4 09:46
【问题初步解决】
与层次结构有关。left 在嵌套的framset下。直接driver.switchTo().frame("left")找不到。
但是用find element 定位找到了。

driver.switchTo().defaultContent();
driver.switchTo().frame(driver.findElement(By.name("left")));
作者: liyanone2006    时间: 2014-4-2 11:30
学习了
作者: kikloly    时间: 2016-3-24 16:58
用find_by_name 也终于定位到main Frame了




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