我正在尝试设置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。
答案 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'
}
);