Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在PHP中切换ToiFrame()时,“无效参数:'id'不能是字符串”_Php_Selenium_Iframe_Behat - Fatal编程技术网

尝试在PHP中切换ToiFrame()时,“无效参数:'id'不能是字符串”

尝试在PHP中切换ToiFrame()时,“无效参数:'id'不能是字符串”,php,selenium,iframe,behat,Php,Selenium,Iframe,Behat,我也试着在getSession中这样做。同样的结果。 我也尝试过使用其他选择器。同样的结果。 我也试着像switchToIFrame1那样索引;因为我的iframe是第二个。这个没有错误,但是在iframe中找不到任何元素,比如字段。 我还尝试自己用javascript重命名iframe。相同的结果。将此添加到behat.yml后,它就起作用了 public function switchActionScopeToIframe($name) { $this->

我也试着在getSession中这样做。同样的结果。 我也尝试过使用其他选择器。同样的结果。 我也试着像switchToIFrame1那样索引;因为我的iframe是第二个。这个没有错误,但是在iframe中找不到任何元素,比如字段。
我还尝试自己用javascript重命名iframe。相同的结果。

将此添加到behat.yml后,它就起作用了

    public function switchActionScopeToIframe($name)
    {
        $this->getdriver()->switchToIFrame($name);
    }

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

根据以下规范:

该命令用于选择要用作后续命令的或的

远程步骤包括:

让id作为从parameters参数获取属性id的结果

如果id不为null、数字对象或表示web元素的对象,则返回错误,错误代码为无效参数

如果当前浏览上下文不再打开,则返回错误,错误代码为“无此窗口”

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

运行第一个匹配条件的子步骤,如果id表示web元素:

让元素成为尝试通过web元素引用id获取已知元素的结果。 如果元素过时,则返回错误,错误代码为stale元素引用。 若元素不是帧或iframe元素,则返回错误,错误代码为“无此帧”。 将当前浏览上下文设置为元素的嵌套浏览上下文。
对于Drupal Mink,我添加了这样的功能

        capabilities:
          extra_capabilities:
            goog:chromeOptions:
              w3c: false

我的iframe名称是如何定义的?对不起。那应该是一根绳子。不确定它是否会影响,但iframe后面是包含基于HTML的文档,它应该是$this->switchActionScopeToIframemy iframename;my iframe名称是一个占位符。问题不在于名字。
extensions:
    Drupal\MinkExtension:
      goutte: ~
      selenium2:
        wd_host: 'http://selenium:4444/wd/hub'
        browser: 'chrome'
        capabilities:
          ...
          extra_capabilities:
            chromeOptions:
              w3c: false
              ...