11

I'm a beginner at PhantomJS/CasperJS.

I just want to start a session and verify that it's OK.

Here's my code:

var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug',
    pageSettings: {
        loadImages: false,
        loadPlugins: false,
        userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'
    }
});

casper.on('remote.message', function(msg) {
    this.echo('remote message caught: ' + msg);
});

casper.on("page.error", function(msg,trace) {
    this.echo("Page Error: " + msg, "ERROR");
});

casper.start('https://www.google.fr');

casper.then(function(){
    console.log('Page Loaded');
    this.test.assertTitle('Google', 'Welcome to Google');
});

casper.run();

When I run this simple script, I get :

C:\Users\Booky\Documents\nike_project>casperjs --ignore-ssl-errors=true --ssl-protocol=tlsv1 debug.js

C:\Users\Booky\Documents\nike_project>[info] [phantom] Starting...
[info] [phantom] Running suite: 3 steps
[debug] [phantom] opening url: https://www.google.fr/, HTTP GET
[debug] [phantom] Navigation requested: url=https://www.google.fr/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://www.google.fr/"
[debug] [phantom] Successfully injected Casper client-side utilities
[debug] [phantom] start page is loaded
[info] [phantom] Step anonymous 3/3 https://www.google.fr/ (HTTP 200)
Page Loaded
[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"

I searched everywhere and I haven't found any response to my problem.


Environment

  • PhantomJS 2.1.1
  • CasperJS 1.1.0beta5
Community
  • 1
  • 1
Jakshirak
  • 111
  • 1
  • 5

2 Answers2

4

There are open issues (see update below) on CasperJS and PhantomJS Github Repos regarding redirecting to/opening about:blank page


  • --proxy-type=none command-line argument

On Windows, the default proxy setting may cause a massive network latency (see Known Issues in the release note). The workaround is to disable proxy completely, e.g. by launching PhantomJS with --proxy-type=none command-line argument. 1


Your code worked correctly, with the following versions :

  • PhantomJS 2.1.1
  • CasperJS 1.0.4
  • MacOSX

[info] [phantom] Starting...
[info] [phantom] Running suite: 3 steps
[debug] [phantom] opening url: https://www.google.fr/, HTTP GET
[debug] [phantom] Navigation requested: url=https://www.google.fr/, type=Other, lock=true, isMainFrame=true
[debug] [phantom] url changed to "https://www.google.fr/"
[debug] [phantom] Successfully injected Casper client-side utilities
[debug] [phantom] start page is loaded
[info] [phantom] Step 3/3 https://www.google.fr/ (HTTP 200)
Page Loaded
PASS Welcome to Google
[info] [phantom] Step 3/3: done in 262ms.
[info] [phantom] Done 3 steps in 341ms

There were some issues with page navigation in casperjs 1.1.x beta and PhantomJS >1.9.8 where the recommendation was to downgrade PhantomJS to 1.9.7


I would recommend, if possible, to try different versions

Either Github Issue 1485 solution or @Ross solution may solve the problem - any comments?

bfmags
  • 2,885
  • 2
  • 17
  • 28
  • 1
    Doesn't help with CasperJS 1.1-beta5 or 1.1-beta4 (on Windows), which officially support PhantomJS 2.x. – Artjom B. May 22 '16 at 11:26
  • I have version 1.1.3 (casper) without beta and it seems to have this "about:blank" error. – jack blank Nov 20 '16 at 16:28
  • This is a common subject in issues on CasperJS github repo. Try to get some feedback from the developers https://github.com/casperjs/casperjs/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20%22about%3Ablank%22 and there's also CasperJS google groups https://groups.google.com/forum/#!forum/casperjs – bfmags Nov 22 '16 at 13:26
  • 1
    In the second github link - adding the option --ssl-protocol=any for phantomjs solved the about:blank issue for me. – Ross Jan 09 '18 at 10:25
2

I also had this same enigmatic debug logging for my step:

[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"

In my case I needed to click Submit button on an AJAX form that was a link element with href='javascript:;'. It turned out this in itself was not the main problem. Rather it was that their web system was built with Apache Wicket java web framework, which issues stateful sessions for each search interaction. And it happens via redirection – and this was the key point here.

Now CasperJS supports two engines PhantomJS and SlimerJS... When digging into CasperJS documentation I wound this linked page Differences between SlimerJS and PhantomJS which states:

'PhantomJS doesn’t do redirections, whereas SlimerJS does.'

For reference here was my options as set to be most loose and with debug enabled (some of these are with the default values):

var casper = require('casper').create({
    engine: 'slimmerjs',
    verbose: true,
    logLevel: 'debug',
    exitOnError: false,
    ignoreSslErrors: true,
    pageSettings: {
        javascriptEnabled: true,
        loadImages: true,
        loadPlugins: true,
        localToRemoteUrlAccessEnabled: true,
        userAgent: 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36',
        XSSAuditingEnabled: false,
        logLevel: 'debug'
    }
});
ux.engineer
  • 10,082
  • 13
  • 67
  • 112