如何在带有 phpunit 的 selenium 中使用两个浏览器
How to use two browsers in selenium with phpunit
我需要同时使用两个浏览器windows进行测试。我正在使用带有硒的 phpunit。
示例:
- 打开浏览器 1 并导航到某些 url
- 复制一些动态内容
- 打开浏览器 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");
希望它能为某人节省时间。
我需要同时使用两个浏览器windows进行测试。我正在使用带有硒的 phpunit。
示例:
- 打开浏览器 1 并导航到某些 url
- 复制一些动态内容
- 打开浏览器 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");
希望它能为某人节省时间。