我开发了一个s关键字驱动框架。它有一个动作关键字来切换框架。 它适用于Mozilla。但是当谈到IE时,它并没有切换。它记录错误。 IE驱动程序-IEDriverServer_x64_2.44.0 IE版-9 Selenium版本-selenium-java-2.44.0
提前致谢。
public static void switchFrame(String object,String data)throws Exception{
try{
driver.switchTo().frame("Ifrm");
Log.info("Switched the frame");
}
catch(Exception e){
Log.error("Not able to switch the frame--- " + e.getMessage());
DriverScript.bResult = false;
}
}
此处发生异常。
答案 0 :(得分:0)
我假设,你在框架中指定的值是id / name / etc.您必须通过调用具有指定值的驱动程序来访问该帧。代码将是
driver.switchTo().frame(driver.findElement(By.id("Ifrm")));
答案 1 :(得分:0)
Selenium不允许我在Internet Explorer上按ID切换到iframe
,但它允许我按索引切换。如果您有某种属性,可以检查它是否仅在iframe
上可用,您可以执行以下操作
new WebDriverWait(driver, 5).until(
new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
try {
int i = 1;
while (true) {
driver.switchTo().defaultContent();
driver.switchTo().frame(i);
String aClass =
driver.findElement(By.xpath("/html/body"))
.getAttribute("class");
if (aClass.contains("modal")) {
return true;
}
++i;
}
} catch (NoSuchFrameException e) {
return false;
}
}
}
);
在我的情况下,我一直在寻找body
类modal