Skip to content Skip to sidebar Skip to footer

Casperjs- Register On A Site And Validate The Mail Sent On Gmail -for Both Slimer And Phantom-

Edit : this is the windows behaviour, with linux it just fails. First, if you succeeded navigate on gmail with casper (without random waiting time -from 20sec to 5min-), please tel

Solution 1:

Well, we finally found a way to do it : the problem is by default gmail loop on ajax requests, to check some new mails, etc... see Page polls remote url, causing casper to block in step.

Fortunately google proposes a way to avoid that, using the simplified HTML version (you can for example use a special gmail address for your tests using this version) : casperJs+gmail

That way the script works as it should.

Bonus :

/*
 * Click on an element specified by its selector and a part of its text content.
 * This method resolves some problem as random space in textNode / more flexible too.
 * Need to fix one bug though : when there is a tag in textContent of our selector.
 */
casper.clickSelectorHasText = function (selector, containsText){
    var tmp = this.getElementsInfo(selector)
        ,i
        ,l
        ,bool=false
        ;
    for (i=0,l=tmp.length;i<l; i++){
        if(tmp[i].text && tmp[i].text.indexOf(containsText)!==-1){
            this.clickLabel(tmp[i].text);
            bool=true;
            break;
        }
    }
    casper.test.assert(bool, "clickSelectorHasText done, text and selector found -> click selector " + selector +" which contains text " + containsText);
};

casper.thenOpen('https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/&hl=en', function scrapeCode(){
        //log inthis.sendKeys("input#Email","your email");
        this.sendKeys("input#Passwd","your password");
        this.click("input#signIn.rc-button-submit");
        //wait to redirect to our mailboxthis.waitForSelector("form[name='f']",function(){
            //check main blockthis.test.assertExists("form[name='f']","Gmail Home ok");
            this.test.assertSelectorHasText("span", "Your gmail title message");
            this.clickSelectorHasText("font", "one string which appears in font tag");
            //wait inscription message appearsthis.waitForSelector("div.msg",function(){
                this.test.assertSelectorHasText("a","the message which activates your account--> in <a>");
            });
        })
        //validate our account
        .then(function(){
            this.clickLabel("the message which activates your account--> in <a>");
            this.waitForPopup(/mail/, function(){
                this.test.pass("popup opened");
            });
            this.withPopup(/mail/, function(){
                this.viewport(1400,800);
                this.test.pass("With Popup");
                //wait something on your website (for me selector .boxValid)this.waitForSelector(".boxValid", function(){
                    /*
                     * Here your code after validation
                     */
                });

            });
        })

It might be possible to do it with normal gmail using event, see resource.received.

Post a Comment for "Casperjs- Register On A Site And Validate The Mail Sent On Gmail -for Both Slimer And Phantom-"