Saya mencoba menggunakan phantomJS (alat hebat apa btw!) Untuk mengirimkan formulir untuk halaman tempat saya memiliki kredensial masuk, dan kemudian menampilkan konten halaman tujuan ke stdout. Saya dapat mengakses formulir dan mengatur nilainya dengan sukses menggunakan phantom, tapi saya tidak begitu yakin apa sintaks yang tepat untuk mengirimkan formulir dan menampilkan konten halaman berikutnya. Sejauh ini yang saya miliki adalah:
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="[email protected]";
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 correctly instrumenting
// the submit in Phantom?
arr[i].submit();
return document.querySelectorAll('html')[0].outerHTML;
}
}
return "failed :-(";
}));
}
phantom.exit();
}
javascript
forms
post
phantomjs
Vijay Boyapati
sumber
sumber
setInterval
gunakan di dalamvar func = steps[testindex]
, laluconsole.log("step " + (testindex + 1) + ": " + funcName(func))
. Ini memungkinkan Anda untuk menambahkan deskripsi ke langkah-langkah yang dilakukan.funcName
. Saya juga merasa lebih mudah ketika melewati serangkaian halaman web, dan mencoba berbagai teknik, untuk merender halaman terakhir yang digunakanpage.render("output.png");
.COOKIE
, dan pertanyaan saya adalah: * apakah cookie ini tersedia diphantom.cookies
objek ketika server mengembalikan respons * ?Juga, CasperJS menyediakan antarmuka tingkat tinggi yang bagus untuk navigasi di PhantomJS, termasuk mengklik tautan dan mengisi formulir.
CasperJS
Diperbarui untuk menambahkan 28 Juli 2015 artikel yang membandingkan PhantomJS dan CasperJS .
(Terima kasih kepada komentator Mr. M!)
sumber
#someid
untuk mengisi berdasarkan ID.Mengirim permintaan POST mentah terkadang lebih nyaman. Di bawah ini Anda dapat melihat contoh asli post.js dari PhantomJS
sumber
GET
permintaan serupa (dengan melakukan sesuatu sepertipage.open(server, 'get', data, ...
) tidak akan berhasil.Seperti yang disebutkan di atas, CasperJS adalah alat terbaik untuk mengisi dan mengirim formulir. Contoh paling sederhana tentang cara mengisi & mengirim formulir menggunakan fungsi fill () :
sumber