Selenium为单个测试提供了2个浏览器实例

Selenium为单个测试提供了2个浏览器实例,selenium,selenium-webdriver,phpunit,Selenium,Selenium Webdriver,Phpunit,我使用phpunit作为硒的包装。我有一个测试,模拟同一网站上的两个用户。所以我需要打开两个不能共享cookie的浏览器——不能只有两个窗口。它们是相同的测试,因此,例如,一个用户将在第一个浏览器实例中单击某个内容,而另一个用户将在另一个浏览器实例中查找更改。不允许以其他用户身份注销和重新登录 有办法做到这一点吗?免责声明:我根本没有尝试过,但这种模式可能会奏效 不幸的是,phpunitwebdriver实现与单元测试框架代码紧密耦合。但是,您可以尝试这样的方法,以使两个不同的web驱动程序实例

我使用phpunit作为硒的包装。我有一个测试,模拟同一网站上的两个用户。所以我需要打开两个不能共享cookie的浏览器——不能只有两个窗口。它们是相同的测试,因此,例如,一个用户将在第一个浏览器实例中单击某个内容,而另一个用户将在另一个浏览器实例中查找更改。不允许以其他用户身份注销和重新登录


有办法做到这一点吗?

免责声明:我根本没有尝试过,但这种模式可能会奏效

不幸的是,phpunitwebdriver实现与单元测试框架代码紧密耦合。但是,您可以尝试这样的方法,以使两个不同的web驱动程序实例并行运行:

<?php
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    private $driver1;
    private $driver2;

    protected function setUp()
    {
        $this->driver1 = $this->createDriver();

        $this->driver2 = $this->createDriver();
    }

    protected function createDriver()
    {
        $driver = new PHPUnit_Extensions_Selenium2TestCase();
        $driver->setBrowser('firefox');
        $driver->setBrowserUrl('http://www.example.com/');
        $driver->start();

        return $driver;
    }

    public function testTitle()
    {
        $this->driver1->url('http://www.example.com/');
        $this->driver1->assertEquals('Example WWW Page', $this->title());

        $this->driver2->url('http://www.example.com/');
        $this->driver2->assertEquals('Example WWW Page', $this->title());
    }

    protected function tearDown() {
        $this->driver1->stop();
        $this->driver2->stop();
    }
}
?>

这可能会有很多问题,但你可以试试


或者,您可以放弃此特定测试的PHPUnit集成,使用专门的PHP WebDriver API,如,这将使您更好地控制WebDriver实例。

免责声明:我根本没有尝试过这一点,但该模式可能会起作用

不幸的是,phpunitwebdriver实现与单元测试框架代码紧密耦合。但是,您可以尝试这样的方法,以使两个不同的web驱动程序实例并行运行:

<?php
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    private $driver1;
    private $driver2;

    protected function setUp()
    {
        $this->driver1 = $this->createDriver();

        $this->driver2 = $this->createDriver();
    }

    protected function createDriver()
    {
        $driver = new PHPUnit_Extensions_Selenium2TestCase();
        $driver->setBrowser('firefox');
        $driver->setBrowserUrl('http://www.example.com/');
        $driver->start();

        return $driver;
    }

    public function testTitle()
    {
        $this->driver1->url('http://www.example.com/');
        $this->driver1->assertEquals('Example WWW Page', $this->title());

        $this->driver2->url('http://www.example.com/');
        $this->driver2->assertEquals('Example WWW Page', $this->title());
    }

    protected function tearDown() {
        $this->driver1->stop();
        $this->driver2->stop();
    }
}
?>

这可能会有很多问题,但你可以试试


或者,您可以放弃此特定测试的PHPUnit集成,使用专门的PHP WebDriver API,如,这将使您更好地控制WebDriver实例。

您可以创建两个WebDriver实例。创建webdriver的实例d1和d2。启动两者,导航到URL。然后执行d1中的操作,验证是否发生在d2中。除上述操作外。若d2中未反映更改,则可能需要刷新页面。您可能需要创建两个WebDriver实例。创建webdriver的实例d1和d2。启动两者,导航到URL。然后执行d1中的操作,验证是否发生在d2中。除上述操作外。若更改并没有反映在d2中,您可能需要刷新页面。