Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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、BDD和Behat和Mink(Selenium2驱动程序):如何在测试结束时以编程方式关闭浏览器窗口?_Php_Selenium Webdriver_Bdd_Behat_Mink - Fatal编程技术网

PHP、BDD和Behat和Mink(Selenium2驱动程序):如何在测试结束时以编程方式关闭浏览器窗口?

PHP、BDD和Behat和Mink(Selenium2驱动程序):如何在测试结束时以编程方式关闭浏览器窗口?,php,selenium-webdriver,bdd,behat,mink,Php,Selenium Webdriver,Bdd,Behat,Mink,我正在尝试使用和学习PHP中的BDD,我也在使用它 我的问题是,一旦测试结束,如何以编程方式关闭Selenium2打开的每个浏览器窗口/选项卡?因为每次测试后关闭如此多的浏览器窗口/选项卡非常耗时 我看到有一些选项允许在Java(Selenium2的母语)中执行相同的操作(我也使用.jar文件),但在PHP中我找不到等效的 注意: 关于更多信息,我已经包括了我正在尝试的代码 我正在尝试为示例.feature编写FeatureContext.php,即: # features/search.fe

我正在尝试使用和学习PHP中的BDD,我也在使用它

我的问题是,一旦测试结束,如何以编程方式关闭Selenium2打开的每个浏览器窗口/选项卡?因为每次测试后关闭如此多的浏览器窗口/选项卡非常耗时

我看到有一些选项允许在Java(Selenium2的母语)中执行相同的操作(我也使用.jar文件),但在PHP中我找不到等效的


注意:

关于更多信息,我已经包括了我正在尝试的代码

我正在尝试为
示例.feature
编写
FeatureContext.php
,即:

# features/search.feature
Feature: Search
    In order to see a word definition
    As a website user
    I need to be able to search for a word

    Scenario: Searching for a page that does exist
        Given I am on "/wiki/Main_Page"
        When I fill in "search" with "Behavior Driven Development"
        And I press "searchButton"
        Then I should see "agile software development"

    Scenario: Searching for a page that does NOT exist
        Given I am on "/wiki/Main_Page"
        When I fill in "search" with "Glory Driven Development"
        And I press "searchButton"
        Then I should see "Search results"
我的
FeatureContext.php
如下所示:

<?php

use Behat\Behat\Tester\Exception\PendingException;
use Behat\Behat\Context\Context;
use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;

/**
* Defines application features from the specific context.
*/
class FeatureContext implements Context, SnippetAcceptingContext
{
    /**
    * Initializes context.
    *
    * Every scenario gets its own context instance.
    * You can also pass arbitrary arguments to the
    * context constructor through behat.yml.
    */
    public function __construct()
    {

        $this->driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');
        $this->session = new \Behat\Mink\Session($this->driver);        
        $this->session->start();
    }


    /**
    * @Given I am on :url
    */
    public function iAmOn($url)
    {
        $this->session->visit('http://en.wikipedia.org'.$url);
    }

    /**
    * @When I fill in :field with :text
    */
    public function iFillInWith($field, $text)
    {
        $this
            ->session
            ->getPage()
            ->find('css', '[type=' . $field . ']')
            ->setValue($text);
    }

    /**
    * @When I press :button
    */
    public function iPress($button)
    {
        $this
            ->session
            ->getPage()
            ->find('css', '[id=' . $button . ']')
            ->press();
    }

    /**
    * @Then I should see :text
    */
    public function iShouldSee($text)
    {
        $title = $this
            ->session
            ->getPage()
            ->find('css', 'h1')
            ->getText();

        if ($title !== $text) {
            new Exception('Invalid page');
        }
        $this->driver->close();
    }
}
试试:

/**
* @AfterScenario
*/
public function tearDown()
{
    $this->session->stop();
}