jquery - 如何通过 WWW::Mechanize::Firefox 调用 jQuery 或 Angular 函数?

标签 jquery angularjs perl www-mechanize-firefox

我正在尝试通过 WWW::Mechanize::Firefox 的 eval_in_page 执行 jQuery/Angular 调用。我猜测存在某种范围问题,因为我遇到了错误。

如果我尝试执行此代码:

angular.element(document.getElementsByClassName("input")[0]).triggerHandler(('change');

我收到这样的回复:

MozRepl::RemoteObject: ReferenceError: angular is not defined at ...

如果我尝试执行此代码:

$(".input").val("Foo")

我收到这样的回复:

MozRepl::RemoteObject: ReferenceError: $ is not defined ...

我似乎无法访问这两个框架。然而,该页面似乎已加载两者。如果我在浏览器控制台中执行代码,它就可以正常工作。

最佳答案

您可以使用 $mech->click() 在字段内单击,它接受 x, y 坐标,插入文本并再次移除焦点。我之前使用 PhantomJS 做过类似的工作。它也应该适用于 WWW::Mechanize::Firefox

use WWW::Mechanize::PhantomJS;
use strict;
use warnings;

my $mech = WWW::Mechanize::PhantomJS->new(log => 1);
$mech->get('http://example.com');

if($mech->success) { 
   # accepts x, y coordinates
   $mech->click(.. field[2]);

   # set a text for example in input-field number 2
   $mech->eval('document.getElementsByTagName("input")[2].value = "Your value";');   

   # Click somewhere else to trigger blur event
   $mech->click(.. outside the field[2]);

  # Read the converted textual input from span
}

关于jquery - 如何通过 WWW::Mechanize::Firefox 调用 jQuery 或 Angular 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41369756/

相关文章:

jquery - DataTables fnClearTable 改变列宽

php - 忽略提示,使用表格或 div?

javascript - 通过 onclick 更改背景并阻止悬停

javascript - AngularJS 'scrollTop' 等效?

css - View 不改变背景图像

javascript - 复选框点击第一次在 safari 中不起作用

perl - 无法弄清楚如何在 perl 中修复此脚本

perl - Mojo::UserAgent 证书验证失败

multithreading - Perl - 多线程脚本打印内存映射和回溯

javascript - CodedUI 测试 + 延迟/ promise : Mouse. Click() 执行点击,调用 httpPost,没有 'then' 或 'finally' 被击中