selenium找不到我浏览器中出现的iframe

时间:2014-11-04 10:10:23

标签: java jquery css iframe selenium

我尝试运行此代码:

driver.switchTo().frame(driver.findElement(frameBy));

其中farmeBy.selector == #offer-carousel > div > div > div.item.popup.w-control-popup.active > div > div > div > iframe

我得到no such element exception

当我在chrome检测工具中运行时,如果得到结果怎么样:

  

$("#offer-carousel> div> div> div.item.popup.w-control-popup.active> div> div> div> iframe")

2 个答案:

答案 0 :(得分:1)

我认为findElement找不到您的iFrame,因为您没有指定frameBy是ID,类还是其他任何内容。您应该使用driver.findElement(By.id(frameBy))

尝试以下方法:

String frameBy = "YOUR_FRAME_ID";
WebElement iFrame = driver.findElement(By.id(frameBy));
driver.switchTo().frame(iFrame);

无论您的iframe ID是什么,以下是搜索第一个iframe的另一种方式:

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));

答案 1 :(得分:1)

我猜你还没有指定访问该元素的方法。

从您提供的代码段中,您必须尝试使用​​cssselector来定位元素。因此,代码可以这样写:

driver.switchTo().frame(driver.findElement(By.cssSelector(frameBy)));

否则,如果您有框架的名称/ ID,您可以使用以下代码:

driver.switchTo().frame("name or id");

或者,您可以使用iframe的索引:

driver.switchTo().frame(0);

注意:以上代码仅在网页中只有一个iframe时才有效。如果有多个,请相应地使用必要的索引。