PhantomJS and iFrame

前端 未结 2 1580
礼貌的吻别
礼貌的吻别 2021-02-06 00:04

I\'m using phantomjs(1.5) and casperjs for my functional tests.

casper = require(\'casper\').create
  loadImages: false


casper.start \'http://vk.com\', ->
          


        
相关标签:
2条回答
  • 2021-02-06 00:53

    The recent versions of PhantomJS allow us to use the --web-security=no flag for non respect the security policy.

    The next script (only PhantomJS) get the title of a link in the iframe, an iframe (adsense).

    /*
        Accessing an iframe (different domain) with PhantomJS
        Example by deerme.org
    */
    
    var page = require('webpage').create(), system = require('system'), t, address;
    if (system.args.length === 1)
    {
        console.log('Usage: phantomfs iframe.js <some URL>');
        phantom.exit();
    }
    
    t = Date.now();
    address = system.args[1];
    page.open(address, function (status)
    {
        if (status !== 'success')
        {
                console.log('FAIL to load the address');
        }
        else
        {
            t = (Date.now()) - t;
            title = page.evaluate( function(){
                return document.title;
            });
            linkTitle = page.evaluate( function(){
                // The site containing jQuery?
                if ( typeof(jQuery) == "undefined" )
                {
                    // Force Load
                    page.injectJs('http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');
                }
                // first iframe #aswift_2
                // second iframe #google_ads_frame3
                return jQuery("#aswift_2").contents()
                    .find("body")
                        .find("#google_ads_frame3")
                            .contents()
                                .find("body")
                                    .contents()
                                        .find("a:last")
                                            .attr("title");
            });
            console.log('Loading time: ' + t + ' msec');    
            console.log('Webpage title: ' + title);
            console.log('Link title (iframe adsense): ' + linkTitle);
        }
        phantom.exit();
    });
    

    Remember, run with the parameter

    phantomjs --web-security=no iframe.js http://anysite.org

    0 讨论(0)
  • 2021-02-06 01:06

    If your application is on a different domain than the one in the iframe, then your script can't interact with the iframe's contents. See: Can scripts in iframe interact with scripts in the main page

    0 讨论(0)
提交回复
热议问题