0

空白のフォームが送信されるテストを実行しようとしています。10 秒待ってページがリロードされたことを確認してから、エラー メッセージが表示されることを確認します。

私は最初からSelenium2を使用しています

java -jar /usr/local/bin/selenium-server-standalone-2.25.0.jar

フィールドが存在することを確認するいくつかのテストがあります。

public function testEmailFieldIsPresentById()
{
$element = $this->byCssSelector('#email');
$this->assertEquals(1, count($element));
}

読んださまざまな記事に基づいてさまざまな関数呼び出しを試しましたが、どちらも機能していません。

これは、コメントアウトされた2つの待機の試みで、これまでのところ私が持っているものです。

<?php

class LoginFormSubmitTest extends PHPUnit_Extensions_Selenium2TestCase
{

    protected function setUp()
    {
        $this->setBrowser('firefox');
        $this->setBrowserUrl('http://localhost/login');
    }

    public function testWithAllBlankFields()
    {
        // Submit the form
        $this->byId('recording-form-login')->submit();
        // Wait 10 seconds
        //$this->waitForPageToLoad(10000);
        //$this->timeouts()->implicitWait(10000);
    }

}

これに関するいくつかの優れたドキュメントを教えて、解決方法を提案できますか?

ありがとう

4

2 に答える 2

1

ステートメント

$this->setBrowserUrl('http://localhost/login');

実際に Web ページを開きません。setBrowserUrl == テストのベースURL を設定します。

これでうまくいくはずです - 追加の行$this->url('http://localhost/login');に注意してください。

protected function setUp()
{
    $this->setBrowser('firefox');
    $this->setBrowserUrl('http://localhost/');
}

public function testWithAllBlankFields()
{
    $this->url('http://localhost/login');
    // Submit the form
    $this->byId('recording-form-login')->submit();
    // Wait 10 seconds
    //$this->waitForPageToLoad(10000);
    //$this->timeouts()->implicitWait(10000);
}
于 2012-11-19T21:24:29.013 に答える
-1

PHP 用の Selenium API と対話するためのラッパーが必要であることを説明する 2 つの優れたチュートリアルを見つけました。

http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html http://edvanbeinum.com/using-selenium-2-phpunit-to-automate-browser-testing

https://github.com/facebook/php-webdriverからラッパーをダウンロードした後、私のコードは次のようになり、tearDown 関数の失敗時にスクリーンショットをキャプチャします

<?php

// Include the Facebook PHP Webdriver init file
require_once '../php-webdriver/__init__.php';

class loginFormSubmitTest extends PHPUnit_Framework_TestCase {

    /**
    * @var WebDriverSession
    */
    protected $_session;

    public function setUp()
    {
        parent::setUp();
        $web_driver = new WebDriver();
        $this->_session = $web_driver->session();
    }

    public function tearDown()
    {

        // Get the status of the test
        $status = $this->getStatus();

        // Check if the status has an error or a failure
        if ($status == PHPUnit_Runner_BaseTestRunner::STATUS_ERROR || $status == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE) {
            // Take a screenshot
            $image_data = base64_decode($this->_session->screenshot());

            file_put_contents(date('Y-m-d-H-i-s') . '.png', $image_data);
        }

        $this->_session->close();
        unset($this->_session);
        parent::tearDown();
    }

    public function test_submit_form_with_all_blank_fields()
    {

        $this->_session->open('http://localhost/login');

        $this->_session->element(
            'id',
            'recording_form_login_submit'
        )->click();

        $email_label_span_text = $this->_session->element('css selector', '#recording-form-login label[for="email"] span')->text();

        $this->assertSame(
            'Required',
            $email_label_span_text
        );

    }

}
于 2012-08-24T12:15:30.397 に答える