问题描述
public function switchActionScopetoIframe($name)
{
$this->getdriver()->switchToIFrame($name);
}
$this->switchActionScopetoIframe("my-iframe-name");
我也尝试通过 getSession() 来做到这一点。相同的结果。
我也尝试过其他选择器。相同的结果。
由于我的 iframe 是第二个,因此我也尝试像 switchToIFrame(1);
这样的索引。这个没有错误,但是它在 iframe 中找不到任何元素,例如字段。
我还尝试用 javascript 自己重命名 iframe。结果一样。
解决方法
将其添加到 behat.yml 后即可运行
capabilities:
extra_capabilities:
goog:chromeOptions:
w3c: false
,
对于 Drupal Mink,我添加了这样的功能。
extensions:
Drupal\MinkExtension:
goutte: ~
selenium2:
wd_host: 'http://selenium:4444/wd/hub'
browser: 'chrome'
capabilities:
...
extra_capabilities:
chromeOptions:
w3c: false
...
,
根据Switch To Frame的规格:
Switch To Frame 命令用于选择 current top-level browsing context 或 child browsing context 的 current browsing context 作为后续命令的 current browsing context。
远程步骤是:
-
让 id 成为从参数参数中获取属性“id”的结果。
-
如果 id 不为 null、一个 Number 对象或一个表示 Web 元素的对象,则返回错误代码为无效参数的错误。
-
如果当前浏览上下文不再打开,则返回错误代码为 no such window 的错误。
-
处理任何用户提示,如果出现错误则返回其值。
-
运行第一个匹配条件的子步骤,并将 id 表示为 Web 元素:
- 让 element 成为尝试通过网络元素引用 ID 获取已知元素的结果。
- 如果元素过时,则返回错误代码为过时元素引用。
- 如果元素不是框架或 iframe 元素,则返回错误代码没有此类框架。
- 将当前浏览上下文设置为元素的嵌套浏览上下文。