Bir siteye giriş yapmak için PhantomJS kullanıyorum. Sitede oturum açmak için OAuth kullanıldı. "Oturum Aç" düğmesine tıklamak sizi OAuth hizmetine götürür. Orada kimlik bilgilerinizi girip "Gönder" i tıkladığınızda, orijinal siteye yeniden yönlendirilirsiniz. Komutum iyi çalışıyor ancak çok sağlam görünmeyen zaman aşımlarına güveniyor.Sayfanın PhantomJS'de nasıl hazır olmasını bekleyebilirim?
Bu kodu, setTimeout
kullanmak yerine sayfanın hazır olmasını beklemek için yeniden yazabilirim. Çoğu zaman, sayfanın hazır olmadığı ve jQuery'nin başlatılmadığı hatalarını görüyorum.
Javascript ile pek iyi değilim, bu yüzden bir örnek yardımcı olacaktır. Bir ton Googling'den sonra hacklediğim şey buydu.
var page = require('webpage').create();
var system = require('system');
page.settings.resourceTimeout = 10000;
page.onResourceTimeout = function(e) {
console.log("Timed out loading resource " + e.url);
};
page.open('https://mysite.com/login', function(status) {
if (status !== 'success') {
console.log('Error opening url');
phantom.exit(1);
} else {
setTimeout(function() {
console.log('Successfully loaded page');
page.evaluate(function() {
$("#submit-field").click(); //Clicking the login button
});
console.log('Clicked login with OAuth button');
setTimeout(function() {
console.log('Addding the credentials');
page.evaluate(function() {
document.getElementById("username").value = '[email protected]';
document.getElementById("password").value = '[email protected]';
document.getElementById("Login").click();
});
console.log('Clicked login button');
setTimeout(function() {
//Inject some jQuery into the page and invoke that here
console.log('Clicked the export button');
}, 15000);
}, 15000);
});
}
});
Doom dağından uzaklaşarak başlamanızı öneririm – fmsf
Geçtiğimiz birkaç hafta boyunca bununla çalıştıktan sonra, şimdi bu "kıyamet dağı" ile ne kastettiğinizi biliyorum. Bu geri cehennem. –