web_tester.php

来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 1,541 行 · 第 1/4 页

PHP
1,541
字号
         *    Sets the reject pattern         *    @param string $substring  Text to search for.         *    @param string $message    Customised message on failure.         *    @access public         */        function NoTextExpectation($substring, $message = '%s') {            $this->TextExpectation($substring, $message);        }                /**         *    Tests the expectation. False if the substring appears         *    in the text.         *    @param string $compare        Comparison value.         *    @return boolean               True if correct.         *    @access public         */        function test($compare) {            return ! parent::test($compare);        }                /**         *    Returns a human readable test message.         *    @param string $compare      Comparison value.         *    @return string              Description of success         *                                or failure.         *    @access public         */        function testMessage($compare) {            if ($this->test($compare)) {                $dumper = &$this->_getDumper();                return "Text [" . $this->_getSubstring() .                        "] not detected in [" .                        $dumper->describeValue($compare) . "]";            } else {                return $this->_describeTextMatch($this->_getSubstring(), $compare);            }        }    }        /**     *    Test case for testing of web pages. Allows     *    fetching of pages, parsing of HTML and     *    submitting forms.	 *    @package SimpleTest	 *    @subpackage WebTester     */    class WebTestCase extends SimpleTestCase {        var $_browser;        var $_ignore_errors = false;                /**         *    Creates an empty test case. Should be subclassed         *    with test methods for a functional test case.         *    @param string $label     Name of test case. Will use         *                             the class name if none specified.         *    @access public         */        function WebTestCase($label = false) {            $this->SimpleTestCase($label);        }                /**         *    Announces the start of the test.         *    @param string $method    Test method just started.         *    @access public         */        function before($method) {            parent::before($method);            $this->setBrowser($this->createBrowser());        }        /**         *    Announces the end of the test. Includes private clean up.         *    @param string $method    Test method just finished.         *    @access public         */        function after($method) {            $this->unsetBrowser();            parent::after($method);        }                /**         *    Gets a current browser reference for setting         *    special expectations or for detailed         *    examination of page fetches.         *    @return SimpleBrowser     Current test browser object.         *    @access public         */        function &getBrowser() {            return $this->_browser;        }                /**         *    Gets a current browser reference for setting         *    special expectations or for detailed         *    examination of page fetches.         *    @param SimpleBrowser $browser    New test browser object.         *    @access public         */        function setBrowser(&$browser) {            return $this->_browser = &$browser;        }                  /**         *    Clears the current browser reference to help the         *    PHP garbage collector.         *    @access public         */        function unsetBrowser() {            unset($this->_browser);        }              /**         *    Creates a new default web browser object.         *    Will be cleared at the end of the test method.         *    @return TestBrowser           New browser.         *    @access public         */        function &createBrowser() {            $browser = &new SimpleBrowser();            return $browser;        }                /**         *    Gets the last response error.         *    @return string    Last low level HTTP error.         *    @access public         */        function getTransportError() {            return $this->_browser->getTransportError();        }                  /**         *    Accessor for the currently selected URL.         *    @return string        Current location or false if         *                          no page yet fetched.         *    @access public         */        function getUrl() {            return $this->_browser->getUrl();        }                /**         *    Dumps the current request for debugging.         *    @access public         */        function showRequest() {            $this->dump($this->_browser->getRequest());        }                /**         *    Dumps the current HTTP headers for debugging.         *    @access public         */        function showHeaders() {            $this->dump($this->_browser->getHeaders());        }              /**         *    Dumps the current HTML source for debugging.         *    @access public         */        function showSource() {            $this->dump($this->_browser->getContent());        }              /**         *    Dumps the visible text only for debugging.         *    @access public         */        function showText() {            $this->dump(wordwrap($this->_browser->getContentAsText(), 80));        }                /**         *    Simulates the closing and reopening of the browser.         *    Temporary cookies will be discarded and timed         *    cookies will be expired if later than the         *    specified time.         *    @param string/integer $date Time when session restarted.         *                                If ommitted then all persistent         *                                cookies are kept. Time is either         *                                Cookie format string or timestamp.         *    @access public         */        function restart($date = false) {            if ($date === false) {                $date = time();            }            $this->_browser->restart($date);        }                /**         *    Moves cookie expiry times back into the past.         *    Useful for testing timeouts and expiries.         *    @param integer $interval    Amount to age in seconds.         *    @access public         */        function ageCookies($interval) {            $this->_browser->ageCookies($interval);        }                /**         *    Disables frames support. Frames will not be fetched         *    and the frameset page will be used instead.         *    @access public         */        function ignoreFrames() {            $this->_browser->ignoreFrames();        }                /**         *    Switches off cookie sending and recieving.         *    @access public         */        function ignoreCookies() {            $this->_browser->ignoreCookies();        }                /**         *    Skips errors for the next request only. You might         *    want to confirm that a page is unreachable for         *    example.         *    @access public         */        function ignoreErrors() {            $this->_ignore_errors = true;        }                /**         *    Issues a fail if there is a transport error anywhere         *    in the current frameset. Only one such error is         *    reported.         *    @param string/boolean $result   HTML or failure.         *    @return string/boolean $result  Passes through result.         *    @access private         */        function _failOnError($result) {            if (! $this->_ignore_errors) {                if ($error = $this->_browser->getTransportError()) {                    $this->fail($error);                }            }            $this->_ignore_errors = false;            return $result;        }        /**         *    Adds a header to every fetch.         *    @param string $header       Header line to add to every         *                                request until cleared.         *    @access public         */        function addHeader($header) {            $this->_browser->addHeader($header);        }                /**         *    Sets the maximum number of redirects before         *    the web page is loaded regardless.         *    @param integer $max        Maximum hops.         *    @access public         */        function setMaximumRedirects($max) {            if (! $this->_browser) {                trigger_error(                        'Can only set maximum redirects in a test method, setUp() or tearDown()');            }            $this->_browser->setMaximumRedirects($max);        }                /**         *    Sets the socket timeout for opening a connection and         *    receiving at least one byte of information.         *    @param integer $timeout      Maximum time in seconds.         *    @access public         */        function setConnectionTimeout($timeout) {            $this->_browser->setConnectionTimeout($timeout);        }                /**         *    Sets proxy to use on all requests for when         *    testing from behind a firewall. Set URL         *    to false to disable.         *    @param string $proxy        Proxy URL.         *    @param string $username     Proxy username for authentication.         *    @param string $password     Proxy password for authentication.         *    @access public         */        function useProxy($proxy, $username = false, $password = false) {            $this->_browser->useProxy($proxy, $username, $password);        }                /**         *    Fetches a page into the page buffer. If         *    there is no base for the URL then the         *    current base URL is used. After the fetch         *    the base URL reflects the new location.         *    @param string $url          URL to fetch.         *    @param hash $parameters     Optional additional GET data.         *    @return boolean/string      Raw page on success.         *    @access public         */        function get($url, $parameters = false) {            return $this->_failOnError($this->_browser->get($url, $parameters));        }                /**         *    Fetches a page by POST into the page buffer.         *    If there is no base for the URL then the         *    current base URL is used. After the fetch         *    the base URL reflects the new location.         *    @param string $url          URL to fetch.         *    @param hash $parameters     Optional additional GET data.         *    @return boolean/string      Raw page on success.         *    @access public         */        function post($url, $parameters = false) {            return $this->_failOnError($this->_browser->post($url, $parameters));        }                /**         *    Does a HTTP HEAD fetch, fetching only the page         *    headers. The current base URL is unchanged by this.         *    @param string $url          URL to fetch.         *    @param hash $parameters     Optional additional GET data.         *    @return boolean             True on success.         *    @access public         */        function head($url, $parameters = false) {            return $this->_failOnError($this->_browser->head($url, $parameters));        }                /**         *    Equivalent to hitting the retry button on the         *    browser. Will attempt to repeat the page fetch.         *    @return boolean     True if fetch succeeded.         *    @access public         */        function retry() {            return $this->_failOnError($this->_browser->retry());        }                /**         *    Equivalent to hitting the back button on the         *    browser.         *    @return boolean     True if history entry and         *                        fetch succeeded.         *    @access public         */        function back() {            return $this->_failOnError($this->_browser->back());        }                /**         *    Equivalent to hitting the forward button on the         *    browser.         *    @return boolean     True if history entry and         *                        fetch succeeded.         *    @access public         */        function forward() {            return $this->_failOnError($this->_browser->forward());        }                /**         *    Retries a request after setting the authentication         *    for the current realm.         *    @param string $username    Username for realm.         *    @param string $password    Password for realm.         *    @return boolean/string     HTML on successful fetch. Note         *                               that authentication may still have         *                               failed.         *    @access public         */        function authenticate($username, $password) {            return $this->_failOnError(                    $this->_browser->authenticate($username, $password));        }                /**         *    Gets the cookie value for the current browser context.         *    @param string $name          Name of cookie.         *    @return string               Value of cookie or false if unset.         *    @access public

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?