六月长青 发表于 2014-2-28 15:41:37

selenium 嵌套frame定位问题

页面有三个frame:top,left,main。结构如下述代码所示。要定位到 left frame应该如何操作?

<html>
<head><title>窗口应用案例</title></head>
<frameset rows="30%,*" border="5">
      <frame src="top.html" name="top"/>
      <frameset cols="30%,*">
                <frame src="left.html"name="left"/>
                <frame src="main.html" name="main"/>               
      </frameset>      
</frameset><noframes></noframes>
</html>可以定位frame("top"),但是继续定位到frame("left")。则抛出异常NoSuchFrameException。                driver.switchTo().frame("top");
                driver.findElement(By.name("message")).sendKeys("top");                driver.switchTo().defaultContent();
                driver.switchTo().frame("left");

maomao121 发表于 2014-3-1 05:44:46

试试看去掉driver.switchTo().defaultContent();

六月长青 发表于 2014-3-3 10:08:55

回复 2# maomao121


去掉也还是不行的。

joykao 发表于 2014-3-3 14:43:52

和层级结构有关吗?top和left不在同一层级?

maomao121 发表于 2014-3-4 06:49:47

要不在driver.switchTo().frame("left")之前, 先用find element定位一下第二个frameset,看看能不能定位到

六月长青 发表于 2014-3-4 09:46:05

【问题初步解决】
与层次结构有关。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:37

学习了

kikloly 发表于 2016-3-24 16:58:56

用find_by_name 也终于定位到main Frame了
页: [1]
查看完整版本: selenium 嵌套frame定位问题