【问题标题】:Unable to click with Selenium in nested frames无法在嵌套框架中单击 Selenium
【发布时间】:2013-09-18 14:39:17
【问题描述】:

我正在尝试在具有嵌套框架的页面上导航。页面结构如下:

<frameset name="framesetContainer">
  <frame name="WebTopMenu">
  ...
  </frame>
  <frame name="WebContent">
    <frameset name="framesetTopContainer">
      <frameset name="framesetWSTopMenu">
        <frame name="frameTitle">
        ...
        </frame>
        <frame name="frameTopMenu">
        ...
        </frame>
      </frameset>
      <frameset name="framesetLeftMenuContentContainer">
        <frameset name="framesetLeftMenuContainer">
        ...
        </frameset>
        <frame name="frameContent">
        ...
        </frame>
      </frameset>
    </frameset>
  </frame>
</frameset>

导航链接位于 frameTopMenu 框架中,内容被加载到 frameContent 中。

我正在使用 Selenium (2.35.0) 的 WebDriver API。下面的代码运行良好,没有任何异常,它找到了正确的链接,但不知何故,click() 调用没有任何效果,并且内容没有加载到内部框架中。

driver.switchTo().frame("WebContent").switchTo().frame("frameTopMenu");
driver.findElement(By.id("link01")).click();

我错过了什么吗?

框架结构无法更改……很遗憾。

【问题讨论】:

  • 我猜这不是 IFrame 问题。相反,没有执行附加到点击的 JS。我建议选择 id 为 link01 的元素的外部/内部元素,然后尝试单击它,或通过 Javascript 模拟单击​​。
  • 嗯,有趣!它的工作原理是不使用 WebElement 的 click() 方法,而是执行以下 js:((JavascriptExecutor) driver).executeScript("document.getElementById('link01').click();"); 感谢您的建议!那么它似乎是一个硒错误。
  • 将 作为 的 child 是否合法?我不认为是。也许你的浏览器让你侥幸逃脱,但 Selenium 让你感到困惑。

标签: selenium selenium-webdriver integration-testing


【解决方案1】:

切换到任何框架元素,只需使用 driver.switchTo().frame("framename");

一旦我们切换到一个框架,如果我们需要切换到另一个框架,我们必须切换到父框架。为了那个用途

driver.switchTo().parentFrame();

如果你使用 driver.switchTo().defaultContent();,它可能不起作用。所以去 driver.switchTo().parentFrame();,它工作正常。

【讨论】:

    【解决方案2】:

    尝试以下嵌套框架的解决方案。希望它有效

    driver.switchTo().frame("WebContent").switchTo().
      frame("framesetTopContainer").switchTo().
      frame("framesetWSTopMenu").switchTo().
      frame("frameTitle");
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      相关资源
      最近更新 更多