我使用casperjs浏览网站,但我在登录过程中遇到了问题:
在网站中,当您登录时,浏览器将切换到新选项卡,登录表单将重置为空白,我看到这个新选项卡中包含我需要在导航调试中请求的数据,像这样:
[debug] [phantom] Navigation requested: url=www.thesite.com, type=FormSubmitted, willNavigate=true, isMainFrame=false
我注意到isMainFrame = false,我尝试使用switchToChildFrame,casper.withFrame()或casper.withPopup()等方法切换框架,但我已经失败了。
我有什么方法可以检索该请求的内容并与之交互吗?
到目前为止我的代码:
casper.start('www.thesite.com', function() {
casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X)');
this.wait(2000);
casper.withFrame('centro', function() {
this.fillSelectors('form[name="teclado"]', {
'input[name="IdGroup"]': 'AAA',
'input[name="IdUser"]': 'BBB',
'input[name="password"]': 'CCC'
}, false);
//this capture retrieves the form filled with my data
this.capture('../../../1.png');
this.click("a[onclick='enviar();return true;']");
});
});
casper.withFrame( 0, function(){
//2.png is getting the form with blank fields
this.capture('../../../2.png');
});
提前致谢。
答案 0 :(得分:1)
好的,我解决了我的问题
问题是我严重写了withPopup代码
我写了正则表达式,通过放置我预期的大部分网址来匹配弹出网址过于严格:
casper.withPopup(/Estatico\/BEComponentesGeneralesAccesoSEI\/Html\/login.htm/, function() {
这对我来说没问题:
casper.withPopup(/true$/, function() {
this.capture('../../../2.png');
});