onclick打开新标签casperjs

时间:2015-11-17 04:54:47

标签: javascript web-scraping phantomjs casperjs

我为这一周解决这个onClick而感到困惑。 我有一些案例可以从一个用于跟踪货物的网站上获取此页面。

这是我打开该链接时的页面: Image

“更多历史记录”是使用onClick包含_blank的超链接。当我点击它时,它将带到新标签。我想使用casperjs废弃的页面位于新选项卡中。 我可以废弃第一个容器,但在那之后,我无法返回主页单击另一个容器历史记录以获取另一个页面

这是我的代码:

casper.start('http://www.wanhai.com/views/Main.xhtml');

casper.waitForSelector(x('//form[@id="cargoTrackListBean"]'), 
    function success() {

        this.then(function() {
            this.sendKeys(x("//input[@id='q_ref_no1']"), BL_number, {keepFocus: true}); 
        }); 

        this.thenClick(x('//input[@value="Query"]'));

        this.wait(5000, function() {
            this.then(function() {
                links = this.evaluate(function () { 
                    var elements = __utils__.getElementsByXPath('//a[contains(text(), "More History")]'); 
                    return [].map.call(elements, function(element) {
                        // return element.children[0].innerText.trim();
                        return element.getAttribute("onclick");
                    });
                });

                // this.echo("onclick :"); 
                // this.echo(JSON.stringify(links));

                var i = 2;

                this.each(links,function(self,Container){
                    this.wait(10000, function() {
                        this.then(function() {
                            this.echo(i);
                            this.thenClick(x('//a[@onclick="'+Container+'"]'));

                            this.then(function() {
                                this.waitForPopup(/CargoTrackHistory\.xhtml/g,  
                                function success() { 
                                    this.echo("popup");
                                    this.withPopup(/CargoTrackHistory\.xhtml/g, function() {
                                        this.wait(7000, function() {

                                            this.capture(fs.workingDirectory.concat('/result/wanhai_').concat(i).concat('_look.png')); 
                                            this.then(function() {
                                                this.thenClick(x('//a[contains(text(), "[Close Page]")]'));

                                                this.then(function() {
                                                    i = i + 1;
                                                });                                                 

                                            }); 
                                        });
                                    });
                                }, function fail() { 
                                    this.echo("Gagal Popup");  
                                    this.capture(fs.workingDirectory.concat('/result/wanhai_').concat(i).concat('_broken.png'));
                                });
                            });
                        });
                    });
                });

                this.then(function() {
                    self.close();
                }); 

            }); 
        });
    }, 
    function fail() {
        fs.write(fs.workingDirectory.concat('/result/wanhai_').concat(BL_number).concat('_error.html'), this.getHTML() , 'w');  
        this.capture(fs.workingDirectory.concat('/result/wanhai_').concat(BL_number).concat('_error.png'));             
        this.echo ("Error!: Parsing HTML#input\n".concat(this.getHTML())).exit();
        this.echo('gagal');
    }); 

casper.then(function() {
    this.echo("Success !");
    // this.echo(result);
    this.exit();
});

casper.run();

任何人都可以给我一些建议,谢谢:)

0 个答案:

没有答案