如何在不为每个函数运行新浏览器窗口的情况下运行PHPUnit Selenium测试?

use*_*846 5 php selenium phpunit unit-testing

我正在尝试使用PHPUnit运行selenium测试用例.我做的第一件事是尝试登录功能,这是完美的,但我想运行一个函数来检查登录后页面上的信息,但它打开一个新的浏览器,而不是继续在当前的浏览器窗口.这是一个问题的原因是因为页面设置为在窗口关闭时删除登录身份验证,所以如果你使用$ this-> url()转到页面,它会给出我需要登录的错误.这是我的代码,它启动浏览器并运行测试登录表单的功能,然后关闭浏览器,打开一个新的并运行链接检查.这当然会因为身份验证错误而导致错误,因为窗口已关闭.我可以在一个函数中运行所有测试,但这实际上是草率编码,我想避免这种情况.有谁知道如何解决这个问题?

<?php
    class TestMyTest extends PHPUnit_Extensions_Selenium2TestCase {
        public function setUp()
        {
            $this->setBrowser("firefox");
            $this->setBrowserUrl("https://**************************");
        }

        public function testLoginForm()
        {

            $this->url("login.php");
            $this->byLinkText('Forgot your password?');
            $form = $this->byCssSelector('form');
            $this->byName('username')->value('test');
            $this->byName('password')->value('1234');
            $form->submit();
        }


        public function testCheckForMainMenueLinks ()
        {
            $this->url("index.php");
            $this->byLinkText('Home');
            $this->byLinkText('Products');
            $this->byLinkText('About us');
            $this->byLinkText('Contact');
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 7

要在其中共享浏览器会话Selenium2TestCase,您必须sessionStrategy => 'shared'在初始浏览器设置中进行设置:

public static $browsers = array(
    array(
        '...
        'browserName' => 'iexplorer',
        'sessionStrategy' => 'shared',
        ...
    )
);
Run Code Online (Sandbox Code Playgroud)

替代方案(默认)是'isolated'.


use*_*846 4

好吧,所以我想你可以直接从另一个函数调用该函数,如下所示:

public function testOne
{
#code
$this->Two();
}

public function Two()
{
#code
$this->Three();
}

public function Three()
{
#code
}
Run Code Online (Sandbox Code Playgroud)

依此类推,这将在没有新浏览器的情况下运行下一个功能,但是,如果它在任何测试中的任何地方失败,整个测试都会停止,因此反馈不会像单独的测试一样好。