1

我有一个小问题,我正在尝试使用 Codeception 来运行我的第一个测试阶段。为此,我使用 Selenium2 和 PrestaShop。

我尝试实现的第一步是登录 PrestaShop 的后台。

但似乎它不想连接到 PrestaShop Backoffice。我被重定向到登录页面!

有谁知道这可能来自哪里?似乎有一些关于 cookie 或会话的东西,但我不知道如何解决这个问题!

编辑:这是我的代码:

Selenium.suite.yml :

class_name: SeleniumGuy
modules:
    enabled: 
        - SeleniumHelper
        - Selenium2
    config: 
        Selenium2:
            url: 'http://localhost/Sites/PrestaShop1.5.4/'
            browser: 'firefox'
            capabilities:
                unexpectedAlertBehaviour: 'accept'

密码接收.yml

paths:
    tests: tests
    log: tests/_log
    data: tests/_data
    helpers: tests/_helpers
settings:
    bootstrap: _bootstrap.php
    suite_class: \PHPUnit_Framework_TestSuite
    colors: false
    memory_limit: 1024M
    log: true
modules:
    config:
        Db:
            dsn: ''
            user: 'root'
            password: 'root'
            dump: tests/_data/dump.sql

在文件夹 tests/Selenium 我有 PrestaShopGlobalCest.php

    <?php
use \SeleniumGuy;

class PrestaShopModuleListCest
{
    // tests
    public function install_the_module(SeleniumGuy $I) {
        PrestaShopGlobalHelper::loginBackoffice($I);
        PrestaShopGlobalHelper::goToPage($I, 'modules');
    }
}

_bootstrap.php

<?php
    Codeception\Util\Autoload::registerSuffix('Helper', __DIR__.'/../helpers/Selenium');
?>

在测试/助手/硒我有

PrestaShopGlobalHelper

<?php

use \SeleniumGuy;

class PrestaShopGlobalHelper
{
    static $mainTabID = array(
        'modules' => 'maintab15'
    );
    static $menuLink = array(
        'modules' => '#maintab15 .submenu li:first'
    );

    // tests
    static public function loginBackOffice(SeleniumGuy $I) {
        $I->wantTo('Login in Backoffice');
        $I->amOnPage('/bb');
        PrestaShopGlobalHelper::login($I);
    }

    static public function login(SeleniumGuy $I, $login = '****', $pass = '****')
    {
        $I->fillField('#email',$login);
        $I->fillField('#passwd',$pass);
        $I->click('Connexion');
    }

    static public function goToPage(SeleniumGuy $I, $page)
    {
        $I->moveMouseOver('#'.self::$mainTabID[$page]);
        $I->click(self::$menuLink[$page]);
    }

}
4

1 回答 1

1

我发现了问题所在:

我在 Selenium2.yml 中添加了明确的等待时间。下一步是在 Selenium2 模块中添加隐式等待,但这是不可配置的,我没有时间尝试扩展类: https ://github.com/Codeception/Codeception/issues/620#issuecomment-26525462

于 2013-10-30T09:51:04.820 回答