【问题标题】:Selenium 2 browser instances for a single test用于单个测试的 Selenium 2 浏览器实例
【发布时间】:2016-01-05 13:17:07
【问题描述】:

我使用 phpunit 作为 selenium 的包装器。我有一个模拟同一网站上的两个用户的测试。所以我需要打开两个不能共享cookies的浏览器——它不能只是两个窗口。它们是相同的测试,例如,一个用户会在第一个浏览器实例中单击某些东西,而另一个用户会在另一个浏览器实例中寻找变化。不能以其他用户的身份注销并重新登录。

有没有办法做到这一点?

【问题讨论】:

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

标签: selenium selenium-webdriver phpunit


【解决方案1】:

免责声明:我根本没有尝试过,但该模式可能有效。

不幸的是,PHPUnit WebDriver 实现与单元测试框架代码紧密耦合。但是,您可以尝试这样的操作,以便让 2 个不同的 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,如 PHP-SeleniumClient,这将使您更好地控制 WebDriver 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2018-09-02
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多