【问题标题】:NoSuchFrameException and not able to identify elementNoSuchFrameException 并且无法识别元素
【发布时间】:2018-03-25 10:51:26
【问题描述】:

我正在使用 selenium webdriver 自动化一个 Web 应用程序,在此期间有一种情况,驱动程序必须切换到 iframe 才能与其元素交互。我正在做所有可能的步骤来切换到iframe,但我仍然得到了

NoSuchFrameException:没有按名称或 ID 找到框架元素 IMW_PROC_MAIN。

下面是我试过的代码:

driver.switchTo().frame("IMW_PROC_MAIN");
pcw.txt_matterName(driver).sendKeys("TempApplication");

我还尝试查找当前 HTML 页面上的 iframe 总数并按索引切换。 为此,我收到一个文本框错误

NoSuchElementException。

分享页面源截图。由于一些限制,我没有分享目标 HTML 文本。

我想与具有id=matterName 的元素进行交互。我怎样才能做到这一点。

【问题讨论】:

  • 我不介意投反对票。但用户可能想在投票之前指出这个问题的错误/不完整之处。

标签: html selenium iframe selenium-chromedriver


【解决方案1】:

driver.switchTo().frame(1);

这是使用索引,索引从 0 开始。

【讨论】:

    【解决方案2】:

    正如您所强调的,还有另一个名为 GB_FRAME 的框架。首先,您必须切换到该框架,然后切换到 IMW_PROC_MAIN 框架。 是框内框。首先控件应该切换到外框,然后控件会切换到内框

    driver.switchTo().frame("GB_FRAME");
    driver.switchTo().frame("IMW_PROC_MAIN");
    pcw.txt_matterName(driver).sendKeys("TempApplication");
    

    【讨论】:

      【解决方案3】:

      你可以试试这个方法

       WebElement FrameID=driver.findElement(By.id("IMW_PROC_MAIN"));
                  driver.switchTo().frame(FrameID);
      

      如果有 2 个框架相互嵌套,那么试试这个:

      WebElement MAINFrameID=driver.findElement(By.id("GB_FRAME"));
                      driver.switchTo().frame(MAINFrameID);
       WebElement FrameID=driver.findElement(By.id("IMW_PROC_MAIN"));
                      driver.switchTo().frame(FrameID);
      // code for your operation
      

      【讨论】:

      • 是的,它正在切换到 GB_FRAME 但无法通过 id = IMW_PROC_MAIN 找到元素。
      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多