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

How to use two browsers in selenium with phpunit

我需要同时使用两个浏览器windows进行测试。我正在使用带有硒的 phpunit。

示例:

  1. 打开浏览器 1 并导航到某些 url
  2. 复制一些动态内容
  3. 打开浏览器 2,导航到其他 url,用步骤 2 的内容填写表格并提交表格。

我无法从浏览器 1 导航到第 3 步中的 url,因为那样它就不起作用了。

现在我无法打开浏览器2,我每次尝试都会使用浏览器1。

有什么想法吗? 谢谢。

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

这不是很直观,因为开箱即用的大多数 Selenium API 几乎无需真正询问就可以为您提供单例驱动程序对象。

谢谢基思·泰勒。我玩了一下代码,终于可以做到了。

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

首先是创建一个 class 扩展 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");

希望它能为某人节省时间。