Monday, June 3, 2024
184
rated 0 times [  191] [ 7]  / answers: 1 / hits: 15127  / 12 Years ago, fri, march 30, 2012, 12:00:00

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



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


casper.start 'http://vk.com', ->
@fill 'form[name=login]', { email: mail, pass: pass}, true

casper.thenOpen http://vk.com/#{app}, ->
@echo User at #{app}
casper.then ->
@click iframe['element'] #?! how I can do it?
casper.then ->
@wait 2000000, -> @echo exit from room: #{num}


casper.run()


So, I login to vk.com (social network in Russia), my app loaded with iframe.



How I can use elements in iFrame, for example click to a button?


More From » coffeescript

 Answers
6

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


[#86514] Thursday, March 29, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
guadalupec

Total Points: 610
Total Questions: 91
Total Answers: 91

Location: Guernsey
Member since Tue, Jul 6, 2021
3 Years ago
;