11

我似乎无法进行简单的表单提交。

下面是我将“测试”提交到 Google 搜索表单并打印出结果的代码。

var url = 'http://www.google.com/',
    page = new WebPage();

page.open(url, function(status) {
    if (status !== 'success')
    {
      console.log('Unable to access network');
      phantom.exit();
      return;
    }
    else
    {
        page.includeJs("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() {
            page.evaluate(function() {
                $('#gbqfq').val("Test");

                $("#gbqfba").click();

            });

            page.render('google.png');
            phantom.exit();
        });
    }
});

任何人都可以告诉我如何做到这一点?我在这里和其他站点环顾四周,但似乎没有任何效果。

4

1 回答 1

6

在“点击”后立即呈现页面是不够的。您必须给 Web 引擎时间来进行所需的任何调用并执行生成的 JavaScript。

在您致电评估后考虑以下事项:

window.setTimeout(
  function () {
    page.render( 'google.png' );
    phantom.exit(0);
  },
  5000 // wait 5,000ms (5s)
);

顺便说一句 - 点击可能会或可能不会起作用,具体取决于它是什么类型的元素。如果这不起作用,我建议您在 Internet 上搜索如何单击 DIV 或它碰巧是什么类型的元素(有一种涉及创建鼠标事件的技术)。

于 2013-05-23T09:48:48.113 回答