【问题标题】:WWW::Mechanize: Unable to find FormWWW::Mechanize: 找不到表格
【发布时间】:2017-01-22 07:34:42
【问题描述】:

我正在尝试自动登录网站。该网站是https://www.remind.com/log_in。使用dump_forms 不会在页面上提供任何表单。无论如何,我尝试使用它来提交表单,但这无法编译:

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

my $ua = WWW::Mechanize -> new();
my $remind = 'https://www.remind.com/log_in';
$ua -> get ($remind);
$ua -> form_number(1);
my $uid = 'user@name.com';
$ua->field("uid", $uid );
my $password = 'passcode';
$ua->field("password", $password);

但这失败了。这是错误: Can't call method "value" on an undefined value

我不知道问题出在哪里。

【问题讨论】:

  • 您应该使用“值”方法显示您的代码... :-)
  • 到目前为止,我刚刚添加了我的整个代码。我不使用“价值”方法。至少我认为我没有
  • JavaScript 的一些选项在this post 中列出。一方面,您询问的WWW::Mechanize::Firefox 肯定是一个解决方案——然后浏览器会为您完成。还有更多。
  • Firefox 可以自动填充我的用户名和密码。我仍然无法找到登录按钮。 click_button(n=>1) 以以下错误终止代码:为 //*[translate(local-name(.), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") = "button" or (translate(local-name(.), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") = "input" and @type="submit")][1] at test.pl line 10. 找到 3 个元素。但是,登录按钮以及“?”按钮在选项卡中以红色突出显示(我使用 autoclose_tab( 0 ) 来观察这一点)。

标签: html forms perl www-mechanize


【解决方案1】:

可能$ua -> form_number(1); 失败了,因为您尝试抓取的页面 (https://www.remind.com/log_in) 中没有表单...

您应该分析页面,查看它的源代码 (view-source:https://www.remind.com/log_in) ... :-)

【讨论】:

  • 我很确定有一个表格,但没有名字。该页面的 html 中有
    ,但我是 HTML 的新手。
  • 你确定吗?我在该页面源上看不到任何
    ,无论有无名称... :-(
  • 是的,里面没有表格。这都是在客户端生成的。在没有 JS 引擎的情况下抓取它会很困难。
  • 啊,好吧。我应该如何解决这个问题?
  • 我找到了一个模块 JavaScript::Engine。这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2011-01-15
  • 2017-04-21
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 2012-10-20
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多