【问题标题】:Webdriver throws Nosuchemelent exception for modal dialog(which is overlay )Webdriver 为模态对话框(覆盖)抛出 Nosuchemelent 异常
【发布时间】:2025-12-31 23:15:03
【问题描述】:

我覆盖了模态对话框。并且无法在弹出的对话框中单击或查找元素。

我在下面有这段代码可以找到 clipAllElement。

   clipAllButton = getWait().until(
                ExpectedConditions.visibilityOf(clipAllButton));
   clipAllButton.click();

如果我执行下面的 javascript 它工作正常。

        /*String str = "jQuery('.mod-featuredtoday-flyout .ft .cta-button').trigger('click')";
        ((JavascriptExecutor)getDriver()).executeScript(str);*/

但是 selenium 抛出 nosuchelement 异常

我正在使用 FF 21 和 Selenium 2.33

是否有人看到类似的问题并知道任何解决方法

【问题讨论】:

  • Why do people constantly put prose English in code formatting?
  • @hexafraction 您的编辑没有完全修复它。 Kavita,对话框是 HTML IFrame 元素中的元素吗?
  • 可能是竞态条件,试试:clipAllButton = getWait().ignoring(NoSuchElementException.class) .until(ExpectedConditions.visibilityOf(clipAllButton));
  • @Erik M:感谢您的建议。让我试试,如果有效,我会更新。

标签: java javascript selenium webdriver


【解决方案1】:

如果模态框包含在 iframe 中,则需要先切换到 iframe,然后再选择其中的元素。

driver.switchTo().frame("foo");

完成 iframe 后,切换回主文档:

driver.switchTo().defaultContent();

【讨论】: