如何使用phpunit在selenium中使用两个浏览器

时间:2016-03-21 16:48:50

标签: php selenium phpunit

我需要同时使用两个浏览器窗口进行测试。我正在使用phpunit和selenium。

示例:

  1. 打开browser1并导航到某个网址
  2. 复制一些dinamyc内容
  3. 打开browser2,导航到其他网址,填写包含第2步内容的表单并提交表单。
  4. 我无法从浏览器1导航到第3步中的网址,因为它无效。

    现在我无法打开browser2,我每次尝试都会使用browser1。

    有什么想法吗? 感谢。

2 个答案:

答案 0 :(得分:1)

我做到了这一点。您基本上需要第二个驱动程序对象,并在该对象上使用open()。所以现在你有两个驱动程序对象 - 一个用于浏览器1,另一个用于浏览器2.你将需要记住哪个驱动程序对象。因为如果要在浏览器2中触发操作,则需要在第二个驱动程序对象上调用所需的函数,而不是默认函数。

这不是很直观,因为开箱即用大多数Selenium API几乎不会给你一个单独的驱动程序对象。

答案 1 :(得分:0)

谢谢基思泰勒。我玩了一些代码,最后我能够做到。

我会把代码放在这里,因为它可能对某人有用。

首先要创建一个扩展PHPUnit_Extensions_Selenium2TestCase的类:

class Browser extends PHPUnit_Extensions_Selenium2TestCase
{   
    public function __construct(){
        parent::__construct();
        $this->setHost("127.0.0.1");
        $this->setPort(4444);
        $this->setBrowser("firefox");
        $this->setBrowserUrl("url");
        $this->prepareSession(); // this does the trick
    }   
}

然后你可以像这样使用它:

$this->url("url1"); // $this will be the default browser
$browser2 = new Browser(); // $browser2 is the new browser and has all the functions from phpunit and selenium available
$browser2->url("url2");

希望能节省时间给某人。