我正在使用 Perl Selenium 包,WWW::Selenium
.
尝试调整浏览器窗口大小时,我收到一个神秘的 JavaScript 错误:
“抛出异常:缺少 ; before 语句”
。
这是代码:
use strict;
use warnings;
use 5.014;
use autodie;
use warnings qw< FATAL utf8 >;
use Carp;
use Carp::Always;
use WWW::Selenium;
my $url = 'http://www.google.com'; #for example
my $sel = WWW::Selenium->new( host => 'localhost',
port => 4444,
browser => '*firefox F:\WIN 7 programs\Web & Internet\Firefox 8 bit\firefox.exe',
browser_url => $url,
);
$sel->open( $url );
$sel->wait_for_page_to_load(10000);
my $res = $sel->window_maximize(); # So far, this works fine
$res = $sel->get_eval( q{ WebDriver driver = ((WebDriverBackedSelenium) selenium).getWrappedDriver();
driver.manage().window().setSize(1040,720);} );
# (Following this: http://stackoverflow.com/questions/1522252/, Eli Colner's post)
程序然后在这里崩溃:
"Threw an exception: missing ; before statement"
如果我删除第一行 JavaScript 并只保留第二行,即:
$res = $sel->get_eval( q{driver.manage().window().setSize(1040,720);} );
它会碰撞:“驱动程序未定义”
。
我们将不胜感激 - 提前致谢
海伦
注意:交叉发布在这里:http://www.perlmonks.org/?node_id=1092355
最佳答案
我在您的代码中看到无效的 javascript,您做出了错误的假设。关于您的代码所基于的引用的 SO 线程:
How to resize/maximize Firefox window during launching Selenium Remote Control?
是什么让你认为 Eli Corner 的答案/解决方案是“javascript”?即 Java 或 C#,因为只有 WebDriver(或 Selenium 2)的语言绑定(bind)才会公开 WebDriverBackedSelenium 功能。所有其他语言绑定(bind)(包括 Perl)都没有这样的选项。因此,即使代码语法正确,执行时也会失败,因为那不是 javascript(或者我应该说引用的类/对象不是 javascript)。
我认为您的解决方案选项是:
使用真正的 javascript 代码,并且 Dave Hunt 的解决方案(在同一个 SO 线程中)理想情况下应该可以工作,适用于 Perl:
$sel->get_eval("window.resizeTo(1024, 768); window.moveTo(0,0);");
使用 Perl WebDriver 绑定(bind)来正确使用 Eli Corner 的解决方案(适用于 Perl),而不是您当前使用的 Selenium (RC) 绑定(bind)。 Perl WebDriver 绑定(bind)是 Selenium::Remote::Driver,而不是 WWW:Selenium。然后您应该能够执行类似的操作(Perl 中不需要 WebDriverBackedSelenium 部分,但这确实意味着您必须关闭使用 Selenium RC 迁移到 WebDriver,没有向后兼容性支持,您需要 Java 或 C#那):
$driver->set_window_position(0, 0);
$driver->set_window_size(640, 480);
关于javascript - Selenium:尝试从 Perl 调整窗口大小:出现神秘的 JavaScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24585497/