【问题标题】:"invalid argument: 'id' can not be string" when trying to switchToIFrame() in PHP“无效的参数:'id' 不能是字符串”当试图在 PHP 中 switchToIFrame()
【发布时间】:2021-02-01 10:09:04
【问题描述】:
    public function switchActionScopeToIframe($name)
    {
        $this->getdriver()->switchToIFrame($name);
    }

$this->switchActionScopeToIframe("my-iframe-name");

我也尝试从 getSession() 执行此操作。结果相同。
我也尝试过其他选择器。结果相同。
我也尝试过像switchToIFrame(1); 这样的索引,因为我的 iframe 是第二个。这个没有错误,但是它没有在 iframe 中找到任何元素,比如字段。
我还尝试使用 javascript 自己重命名 iframe。结果一样。

【问题讨论】:

  • my-iframe-name 是如何定义的?
  • 对不起。那应该是一个字符串。 ``` 的#document
  • 根据您的 HTML,它应该是 $this->switchActionScopeToIframe("my-iframename");
  • “my-iframe-name”是一个占位符。问题不在于名称。

标签: php selenium iframe behat


【解决方案1】:

将其添加到 behat.yml 后它工作了

        capabilities:
          extra_capabilities:
            goog:chromeOptions:
              w3c: false

【讨论】:

    【解决方案2】:

    对于 Drupal Mink,我添加了类似的功能。

    extensions:
        Drupal\MinkExtension:
          goutte: ~
          selenium2:
            wd_host: 'http://selenium:4444/wd/hub'
            browser: 'chrome'
            capabilities:
              ...
              extra_capabilities:
                chromeOptions:
                  w3c: false
                  ...
    

    【讨论】:

      【解决方案3】:

      按照Switch To Frame的规范:

      Switch To Frame 命令用于选择current top-level browsing contextcurrent browsing context 中的一个child browsing context 用作后续命令的current browsing context

      远程步骤是:

      • 令 id 为从参数参数中获取属性“id”的结果。

      • 如果 id 不为 null、Number 对象或表示 Web 元素的 Object,则返回带有错误代码无效参数的错误。

      • 如果当前浏览上下文不再打开,则返回错误,错误代码为 no such window。

      • 处理任何用户提示并在错误时返回其值。

      • 运行第一个匹配条件的子步骤,以防 id 代表一个 web 元素:

        • 让 element 成为尝试通过 Web 元素引用 id 获取已知元素的结果。
        • 如果元素已过时,则返回错误并带有错误代码过时的元素引用。
        • 如果元素不是框架或 iframe 元素,则返回错误,错误代码为 no such frame。
        • 将当前浏览上下文设置为元素的嵌套浏览上下文。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 2019-11-19
        • 2021-07-01
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        相关资源
        最近更新 更多