如何为Selenium Grid 2(Perl绑定)设置Chrome驱动程序?

时间:2012-06-06 08:24:18

标签: perl google-chrome selenium-grid selenium-chromedriver

我正在尝试设置Selenium Grid 2(用于集线器的Ubuntu主机和安装的Perl以及用于各种浏览器的Windows主机(Firefox,IE,Chrome,Opera))。一切正常,我可以开始对IE,FF,Opera进行简短的样本测试,看看浏览器是如何打开并加载页面的。这是测试:

#!/usr/bin/perl
use Selenium::Remote::Driver;
use Test::More tests=>4;

my $driver = Selenium::Remote::Driver -> new(
    'browser_name'  => 'internet explorer'
);
$driver->get("http://www.google.com");
$driver->quit();

但是我不能让Chrome工作。我在 Windows主机上使用自定义驱动程序选项启动了Selenium-server(这是正确的吗?)

java -jar selenium-server-standalone-2.22.0.jar -role node -hub http://my-ubuntu-host:4444/grid/register -browser "browserName=chrome,version=19" -Dwebdriver.chrome.driver="c:\selenium-2-22-0\chromedriver.exe"

当我尝试使用'browser_name' => 'chrome' Ubuntu-host 进行测试时,它只报告错误消息:

caligula@my-ubuntu-host:~/www$ ./test.pl 
1..4
Could not create new session at ./test.pl line 5.
# Looks like your test exited with 255 before it could output anything.

有人可以帮助我吗?有很多例子,但它们都是Java语言,我无法将它们中的任何一个用于Perl代码。

我还注意到Chrome驱动程序存档名为 chromedriver_win_20.0.1133.0.zip 。它与 selenium server 2.22 兼容吗?我试过使用selenium server 2.20但是根本没有任何工作:也没有FF,也没有IE。

1 个答案:

答案 0 :(得分:3)

必需参数'proxy' => {HASH}未传递给构造函数。只有chrome-driver会抛出异常,而当你调用FF或IE时,一切都很好。

控制台中有短消息:

org.openqa.selenium.WebDriverException: proxy must be of type dictionary, not null.
Received: null

以下列方式创建Selenium::Remote::Driver实例解决了问题:

    my $driver = new Selenium::Remote::Driver(
        'browser_name' => 'chrome',
        'proxy' => {
            'proxyType' => 'system'
        }
    );