PhantomJS导航页面和完整的工作流程
PhantomJS Navigating Pages and complete fullwork flow
我有一个结构如下的应用程序:
login.html >>> page1.html >>> page2.html
如果不完成前面的页面,就无法进入page2.html。现在我知道我走错了路,因为我卡住了
var page = require('webpage').create();
var system = require('system');
page.onConsoleMessage = function(msg) {
system.stderr.writeLine('console: ' + msg);
};
function open_login(){
login_page('https://test.com/login.html');
}
function login_page(file){
page.open(file,function(){
page.evaluate(function(){
var user = document.querySelector('#username');
var password = document.querySelector('#password');
var submit = document.querySelector('#submit');
user.value = 'user1';
password.value = 'pwd1';
submit.click();
});
// What now? How do I ensure that the page1.html has loaded so that i can get more elements, their values and submit to proceed to page2.html
page.render("login.png");
window.setTimeout(function() {
page.render("login.png");
phantom.exit();
}, 5000);
});
}
open_login();
我现在的问题是,我不知道下一步该做什么,它将正确登录,但我如何用JavaScript检查click
事件已成功加载page1.html ?我不能使用jquery,也不能使用casperjs。必须是phantomjs
有一个回调函数页面。onLoadFinished在每次页面加载完成时触发。你可以在回调函数中检查当前url并做相应的事情。
page.onLoadFinished = function(result) {
var current_url = page.evaluate(function(){
return window.location.href;
});
if(result == "fail") {
console.log("Couldn't load " + current_url);
phantom.exit(1);
}
if(current_url.indexOf("page1.html") !== -1){
do_stuff();
}
else if(current_url.indexOf("page2.html") !== -1){
do_other_stuff();
}
}
相关文章:
- 设计代码工作流程
- 什么是完美的工作流程来处理A,B和amp;其中A取决于B,B取决于C
- 工作流程/选项以扩展其他选项
- 通过登录和在线照片显示上传照片的工作流程
- Rails 4:资产管道的正常CSS/JS开发工作流程
- 在适当的工作流程中将第三方JS库添加到Ionic
- PHP和Javascript日志完整的工作流程
- 了解eclipse项目的性质和web开发的工作流程
- 如何控制页面加载工作流程
- 关于用ANGULAR.js编写8步应用的工作流程的建议
- CSS位置固定不工作-粘性导航
- 程序js测试工作流程
- 确定一个bug是浏览器的错误还是我自己的错误的工作流程是什么?
- 我不能理解这段代码的工作流程
- 临时编码工作流程
- 客户端模块工作流程:(Browserify + npm + gulp)或(RequireJS + Bower + gul
- 测试和开发一个复杂的小部件意味着在客户网站上运行的工作流程
- 开发EnderJS库组件的工作流程
- 开发相互依赖的npm包的最佳工作流程
- PhantomJS导航页面和完整的工作流程