我无法使用Internet Explorer切换到IFrame

时间:2015-02-27 09:23:42

标签: selenium selenium-webdriver internet-explorer-8

我开发了一个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;
        }
    }

此处发生异常。

2 个答案:

答案 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;
      }
    }
  }
);

在我的情况下,我一直在寻找bodymodal