javascript - Selenium:尝试从 Perl 调整窗口大小:出现神秘的 JavaScript 错误

标签 javascript perl selenium

我正在使用 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)。

我认为您的解决方案选项是:

  1. 使用真正的 javascript 代码,并且 Dave Hunt 的解决方案(在同一个 SO 线程中)理想情况下应该可以工作,适用于 Perl:

    $sel->get_eval("window.resizeTo(1024, 768); window.moveTo(0,0);");

  2. 使用 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/

相关文章:

eclipse - "Couldn' t 连接到 RemoteTestNG 客户端”在 OSX-mountain-lion 上启动 TestNG 时

javascript - NgModel 没有反射(reflect)从下拉列表中选择的值,该下拉列表的值是根据另一个下拉列表填充的

multithreading - Perl 中的读写锁

selenium - Brave 浏览器有 Selenium 驱动程序吗?

regex - 使用正则表达式查找 HTML 文本中具有双字母的单词

perl - 在脚本中更改工作目录的最佳做法是什么?

python-3.x - 使用 Python 解决验证码问题

javascript - *无需*浏览器,仅使用 JavaScript 解释器即可创建 webRTC 对等体

javascript - 如何在 Javascript 上解析这个 JSON

javascript - AngularJS:调用回调后立即清除超时