我正在尝试使用phantomJS(这是一个很棒的工具btw!)为我有登录凭据的页面提交表单,然后将目标页面的内容输出到stdout.我能够使用幻像访问表单并成功设置其值,但我不太确定提交表单和输出后续页面内容的正确语法.到目前为止我所拥有的是:
var page = new WebPage();
var url = phantom.args[0];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
console.log(page.evaluate(function () {
var arr = document.getElementsByClassName("login-form");
var i;
for (i=0; i < arr.length; i++) {
if (arr[i].getAttribute('method') == "POST") {
arr[i].elements["email"].value="mylogin@somedomain.com";
arr[i].elements["password"].value="mypassword";
// This part doesn't seem to work. It returns the content
// of the current page, not the content of the page after
// the submit has been executed. Am I …Run Code Online (Sandbox Code Playgroud) 我正在开发一个小项目,PhamtomJS将登录我的网站并上传一个插件.我几乎拥有它,除了一个奇怪的问题.尽管file.upload我的代码部分工作正常,但"立即安装"按钮仍处于禁用状态.这是Phantom渲染的图片:
如您所见,该按钮仍处于禁用状态.因此,当我尝试使用该getElementById()方法单击它时,它将无法工作.如果我尝试通过以下方式提交表单,它也不会起作用:
document.querySelector('form[action*="/wp-admin/update.php?action=upload-plugin"]').submit()
Run Code Online (Sandbox Code Playgroud)
我也尝试手动启用按钮,然后通过Javascript单击它,但这也没有用.有任何想法吗?
编辑
当试图拉出按钮的外部HTML时,我输入以下内容console:
console.log(document.querySelector('#install-plugin-submit').outerHTML)
Run Code Online (Sandbox Code Playgroud)
此代码的结果如下:
<input type="submit" name="install-plugin-submit" id="install-plugin-submit" class="button" value="Install Now">
Run Code Online (Sandbox Code Playgroud)