2

我正在尝试设置 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"

当我尝试在Ubuntu 主机上运行测试时'browser_name' => 'chrome',它只报告简短的错误消息:

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 都没有。

4

1 回答 1

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'
        }
    );
于 2012-06-08T18:40:34.567 回答