Javascript 如何使用PhantomJS提交表单?

Javascript 如何使用PhantomJS提交表单?,javascript,phantomjs,form-submit,Javascript,Phantomjs,Form Submit,我对幻影越来越熟悉了。但我一件事也做不到。我有一个带有简单表单的页面: <FORM action="save.php" enctype="multipart/form-data" method="GET" onSubmit="return doSubmit();"> <INPUT name="test_data" type="text"> <INPUT name="Submit" type="submit" value="Submit"> &l

我对幻影越来越熟悉了。但我一件事也做不到。我有一个带有简单表单的页面:

<FORM action="save.php" enctype="multipart/form-data" method="GET" onSubmit="return doSubmit();">
    <INPUT name="test_data" type="text">
    <INPUT name="Submit" type="submit" value="Submit">
</FORM>
当呈现页面时,我看到文本字段是555,但是表单没有提交,save.php没有写下test_数据值。所以
doSubmit()
没有执行,是吗
doSubmit()
是一个简单的验证步骤,提交应该加载到下一页


所以问题是:如何使用PhantomJS在页面上执行javascript代码?

您似乎想要提交表单。你可以通过不同的方式实现,比如

  • 在页面上下文中:

    page.evaluate(function() {
        document.forms[0].submit();
    });
    
  • 或者,将焦点放在表单文本字段上,并使用发送回车键

之后,您将不得不等待,直到下一页加载。最好在提交表单之前注册(其中包含您剩余的脚本)

page.open(url, function(){
    page.onLoadFinished = function(){
        page.render("nextPage.png");
        phantom.exit();
    };
    page.evaluate(function() {
        document.forms[0].test_data.value="555";
        document.forms[0].submit();
    });
});
或者你可以简单地等待:

page.open(url, function(){
    page.evaluate(function() {
        document.forms[0].test_data.value="555";
        document.forms[0].submit();
    });
    setTimeout(function(){
        page.render("nextPage.png");
        phantom.exit();
    }, 5000); // 5 seconds
});

函数doSubmit(){if(document.forms[0].test_data.value==”){alert(“填充字段!”);return false;}return true;}
在这里,很抱歉,我忘了在问题中发布它。它只是在验证。哦,我明白了。所以我只需要通过JS点击提交按钮?无论如何如果我需要执行这个函数,它是以这种方式工作还是有其他方法?很抱歉,这是一个蹩脚的方法。它的奇怪之处可能是重复的,但正如我看到的,最简单的方法是document.forms[0]。submit();但它不起作用。不,我用的是2.0.0,似乎是最后一个。可能问题出在其他地方?请注册到、、事件。可能有错误。对不起,我尝试将这些函数添加到代码中,但它们不起作用或出现故障。我只是复制粘贴了文档中的示例,并将其放在page.evaluate()之后。什么都不起作用=\奇怪的是,我用了两种不同的方法,包括单击,但没有人不起作用。这么简单的任务怎么会制造这么多麻烦呢。
page.open(url, function(){
    page.evaluate(function() {
        document.forms[0].test_data.value="555";
        document.forms[0].submit();
    });
    setTimeout(function(){
        page.render("nextPage.png");
        phantom.exit();
    }, 5000); // 5 seconds
});