javascript - 如何使用 PhantomJS 提交表单?

标签 javascript phantomjs form-submit

我越来越熟悉 PhantomJS。但我不能得到一件事。我有一个简单表单的页面:

<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>

和一个 save.php 只是写下 test_data 值

所以我这样做:

page.evaluate(function() {
    document.forms[0].test_data.value="555";
    doSubmit();
});

呈现页面时,我看到文本字段为 555,但表单未提交且 save.php 未记下 test_data 值。所以 doSubmit() 没有执行,是吗? doSubmit() 是一个简单的验证步骤,提交应该加载下一页。

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

最佳答案

您似乎要提交表单。您可以通过不同的方式实现这一目标,例如

之后,您将不得不等待下一页加载完毕。最好通过注册 page.onLoadFinished 来完成。 (然后包含您剩余的脚本)就在提交表单之前。

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
});

关于javascript - 如何使用 PhantomJS 提交表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28500775/

相关文章:

javascript - opencv - 类型错误 : Cannot read property 'length' of undefined

javascript - 在nodejs中使用axios检查url重定向

javascript - javascript在哪里存储变量以及它们保存多长时间?

javascript - casperjs 无法打开 https url

html - 我可以制作一个表单以转到用户指定的 URL 吗?

jquery - symfony2使用ajax模拟多个提交按钮

javascript - babel 将 `let` 转换为 `var` ,运行时如何知道它应该取决于 block 作用域

javascript - 通过 PhantomJS 获取 Google Ads 内容

javascript - CasperJS 中移动鼠标触发悬停事件

php - Joomla 如何在提交表单时路由到 Controller 方法?