1

我正在做一个 Symfony 项目,我想用 Behat/Mink 创建单元测试。

我有一个场景:

Feature: Homepage
Scenario: Check if I can log on
    Given I am on "/"
    And I follow "connexion_js"
    And I switch to the iframe "cboxIframe"

我已经在 FeatureContext 类中定义了最后一行。

class FeatureContext extends MinkContext implements KernelAwareInterface{

    // ...

    /**
     * @Given /^I switch to the iframe "([^"]*)"$/
     */
    public function iSwitchToIframe($arg1 = null)
    {
        $this->getSession()->switchToIFrame($arg1);
    }
}

当我执行我的 shell 命令时:

$: bin/behat "@PoleMainBundle"
Feature: Homepage
Scenario: Check if I can log on          # src/xxx/xxx/MainBundle/Features/homepage.feature:2
Given I am on "/"                      # xxx\xxx\MainBundle\Features\Context\FeatureContext::visit()
And I follow "connexion_js"            # xxx\xxx\MainBundle\Features\Context\FeatureContext::clickLink()
And I switch to the iframe "cboxIframe"     # xxx\xxx\MainBundle\Features\Context\FeatureContext::iSwithToIframe()
  iFrame management is not supported by Behat\Symfony2Extension\Driver\KernelDriver
...
4

1 回答 1

1

经过多次尝试,我找到了答案。对于任何行为的函数,方法可以放置任何类型的参数(id、class、name,...)。

对于 switchToIFrame() 方法,该方法只放置元素的 NAME !!!

此外,我无法仅使用 Behat/Mink 的方法。

我现在使用 Selenium2 服务器,并在我的文件.feature 中添加了“@javascript”。

Feature: Homepage
    @javascript
    Scenario: Check if I can log on
    Given I am on "/"
    ...

有用 !

于 2013-06-18T15:11:54.670 回答