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 处理$会话和行为+;水貂&x2B;硒_Php_Selenium_Behat_Mink - Fatal编程技术网

Php 处理$会话和行为+;水貂&x2B;硒

Php 处理$会话和行为+;水貂&x2B;硒,php,selenium,behat,mink,Php,Selenium,Behat,Mink,为了使用我尝试测试的系统,您需要是经过身份验证的用户。登录后,将在您登录时创建一个$\会话变量,其中包含用户id和用户名。始终检查此会话,如果此会话变量不存在,则会将用户重定向到登录页面。我可以使用behat登录,但一旦它进入系统,我就会重定向回登录页面。如果我对负责$\u会话验证的行进行注释,它将按预期工作。你们知道如何登录并保持会话吗?我读过很多使用laravel或symfony的解决方案,但我没有使用任何框架 以下是功能部件代码: Feature: In order to use

为了使用我尝试测试的系统,您需要是经过身份验证的用户。登录后,将在您登录时创建一个$\会话变量,其中包含用户id和用户名。始终检查此会话,如果此会话变量不存在,则会将用户重定向到登录页面。我可以使用behat登录,但一旦它进入系统,我就会重定向回登录页面。如果我对负责$\u会话验证的行进行注释,它将按预期工作。你们知道如何登录并保持会话吗?我读过很多使用laravel或symfony的解决方案,但我没有使用任何框架

以下是功能部件代码:

Feature:
    In order to use the system, the user needs a valid login first

Scenario: Loading the log in page
    Given I am on "/login.php"
    Then I should see "Login"

@javascript
Scenario: Logging in with the right credentials 
    Given I am signed in
    And I am on "/students"
    And I wait 10 seconds
    Then I should see "logout"
以下是水貂上下文代码的一部分:

/**
 * @Given /^(?:|I )am signed in$/
 */
public function signIn()
{

    session_start();
    $_SESSION['admin']["user_name"] = 'admin';
    $_SESSION['admin']["id"] = '1';
    $this->getSession()->getDriver()->setCookie(session_name(), session_id());
    session_commit();
}

PHP超级全局变量$\u会话将在每个场景之后重置。您可以在每个Sceanrio中调用一个登录名,以最小化问题

/* @Given I am logged in as :username with password :password
 *
 * @param $username
 * @param $password
 */
public function iAmLoggedInAs($username, $password)
{
    $session = $this->getSession();

    $session->visit("[URL]");

    $page = $session->getPage();

    $page->find("named", array("id_or_name", "[id]"))->setValue($username);
    $page->find("named", array("id_or_name", "[id]"))->setValue($password);
    $page->find("named", array("id_or_name", "[submit button]"))->click();
}

那么,你的意思是在运行另一个测试套件后会话结束了吗?不是。我的意思是:如果我有一个场景,其中我登录并被重定向到下一个页面,检查我是否有管理会话,我会被踢出。好像这个管理会话从未设置过。这很奇怪。你在测试鞋吗?我继续寻找解决方案。没有成功。你找到解决办法了吗?