Casperjs将MainFrame切换到新选项卡

时间:2014-10-08 09:29:33

标签: phantomjs casperjs

我使用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');
});

提前致谢。

1 个答案:

答案 0 :(得分:1)

好的,我解决了我的问题

问题是我严重写了withPopup代码

我写了正则表达式,通过放置我预期的大部分网址来匹配弹出网址过于严格:

casper.withPopup(/Estatico\/BEComponentesGeneralesAccesoSEI\/Html\/login.htm/, function() {

这对我来说没问题:

casper.withPopup(/true$/, function() {
    this.capture('../../../2.png');
});