Phantomjs – 如何填写表单,提交并获得结果?

我似乎无法做一个简单的表单提交.

以下是我向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();
        });
    }
});

任何人都可以告诉我如何做到这一点我在这里和其他地方看过,但似乎没有任何工作.

解决方法

在“点击”之后立即呈现页面是不够的.你必须给网络引擎时间来做任何调用,并执行结果的JavaScript.

电话评估后请考虑以下内容

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

顺便说一下,点击可能会或可能不工作,取决于它是什么样的元素.如果这不工作,我建议您在互联网上搜索如何点击DIV或任何类型的元素(有一种涉及创建鼠标事件的技术).

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...