我尝试运行此代码:
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")
答案 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时才有效。如果有多个,请相应地使用必要的索引。