Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
cakephp 3 selenium facebook Web驱动程序验证_Php_Facebook_Selenium_Cakephp_Phpunit - Fatal编程技术网

cakephp 3 selenium facebook Web驱动程序验证

cakephp 3 selenium facebook Web驱动程序验证,php,facebook,selenium,cakephp,phpunit,Php,Facebook,Selenium,Cakephp,Phpunit,我正在使用CakePHP3、selenium facebook web驱动程序和phpunit 我的问题是,我无法访问需要身份验证的页面。我已经尝试添加了我在控制器单元测试中使用的相同身份验证会话。这不管用 $this->session(['Auth.User.id' => 1, 'Auth.User.role' => 'admin']); 然后我让测试先登录,然后再执行其他测试。这不管用。我想我必须添加一个会话 <?php use \Facebook\Web

我正在使用CakePHP3、selenium facebook web驱动程序和phpunit

我的问题是,我无法访问需要身份验证的页面。我已经尝试添加了我在控制器单元测试中使用的相同身份验证会话。这不管用

$this->session(['Auth.User.id' => 1, 'Auth.User.role' => 'admin']);
然后我让测试先登录,然后再执行其他测试。这不管用。我想我必须添加一个会话

    <?php

use \Facebook\WebDriver\Remote\DesiredCapabilities;
use \Facebook\WebDriver\Remote\RemoteWebDriver;
use \Facebook\WebDriver\WebDriverBy;

/**
 * Description of UserEditTest
 *
 * @author john
 */
class UserEditTest extends PHPUnit_Framework_TestCase 
{

    protected $webDriver;




    public function setUp()
    {
         $this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::firefox());
        // $this->session(['Auth.User.id' => 1, 'Auth.User.role' => 'admin']);
    }

    protected $url = 'http://localhost:81/dev/usedCars/users/edit/11'; 


      //return should contain Please enter your username and password
    public function validLoginProvider()
    {
        $inputs[] = [
            [
                'username'              => 'testuser',
                'password'              => 'test',               
            ]
        ];

        return $inputs;
    }
    //login input
  public function fillLoginFormAndSubmit($inputs)
{


    $this->webDriver->get('http://localhost:81/dev/usedCars/users/login');
    $form = $this->webDriver->findElement(WebDriverBy::id('login'));
    var_dump($inputs);

    foreach ($inputs as $input => $value) {
        $form->findElement(WebDriverBy::name($input))->sendKeys($value);      
    }
    $form->submit();
}

/**
 * @dataProvider validLoginProvider
 */
public function testValidFormSubmission(array $inputs)
{
    $this->fillLoginFormAndSubmit($inputs);

    $content = $this->webDriver->findElement(WebDriverBy::tagName('body'))->getText();
    $this->assertContains('Showroom', $content);

    testValidEditSubmission();

}



 //for testing the edit view page
      public function validInputsProvider()
    {

           $inputs[] = [
            [
               'interests'              => 'changed'
            ] 
        ];

        return $inputs;
    }

     //for testing the edit page
    public static function invalidInputsProvider()
    {
         $inputs[] = [
            [              
                'email'              => 'mypassword'

            ]
        ];


        return $inputs;
    }



      public function fillFormAndSubmit($inputs)
{
       // $this->session(['Auth.User.id' => 1, 'Auth.User.role' => 'admin']);

    $this->webDriver->get('http://localhost:81/dev/usedCars/users/edit/11');
    $form = $this->webDriver->findElement(WebDriverBy::id('edit'));
    var_dump($inputs);

    foreach ($inputs as $input => $value) {
        $form->findElement(WebDriverBy::name($input))->sendKeys($value);


    }

    $form->submit();
}


/**
 * @dataProvider validInputsProvider
 */
public function testValidEditSubmission(array $inputs)
{


    $this->fillFormAndSubmit($inputs);

    $content = $this->webDriver->findElement(WebDriverBy::tagName('body'))->getText();
    $this->assertContains('The user has been saved', $content);
}


/**
 * @dataProvider invalidInputsProvider
 */
public function testInvalidEditSubmission(array $inputs)
{
    $this->fillFormAndSubmit($inputs);

   $content = $this->webDriver->findElement(WebDriverBy::tagName('body'))->getText();
     $this->assertContains('valid email', $content);
}

    public function tearDown()
{
    $this->webDriver->quit();
}   //put your code here
}

我找到了一个解决方案。将登录方法添加到测试。这将访问您的登录页面并输入参数中提供的数组数据

     //login input
  public function fillLoginFormAndSubmit($inputs)
{        
    $this->webDriver->get('http://localhost:81/dev/usedCars/users/login');
    $form = $this->webDriver->findElement(WebDriverBy::id('login'));
    var_dump($inputs);

    foreach ($inputs as $input => $value) {
        $form->findElement(WebDriverBy::name($input))->sendKeys($value);      
    }
    $form->submit();
    }
然后将登录详细信息添加到数组变量中,并在执行测试之前调用login方法

    public function fillFormAndSubmit($inputs)
    {
//add login details here
              $login = array("username"=>"testuser","password"=>"test");
             //call login method            
         $this->fillLoginFormAndSubmit($login);

        $this->webDriver->get('http://localhost:81/dev/usedCars/users/edit/11');
        $form = $this->webDriver->findElement(WebDriverBy::id('edit'));
        var_dump($inputs);

        foreach ($inputs as $input => $value) {
            $form->findElement(WebDriverBy::name($input))->sendKeys($value);


        }

        $form->submit();
        }