przemoinho przemoinho - 12 days ago 9
HTML Question

PhantomJS - select html element

I am using phantomJS and i want to select element from html webpage.

Here is my code in phantomJS:

var page = require('webpage').create();
var url = 'http://localhost:9001/build/browser/index.html';

page.open(url, function (status) {
if (status === 'success') {
var input = page.evaluate(function() {
return document.querySelector('[fill="#ffcc00"]');
}, 2000);
console.log(input);
phantom.exit();
}
});


Here is my html:

<html lang="en-US" class=" js ">
<head>
</head>
<body>
<section class="mapSection">
<article id="mainMap">
<div id="map" class="leaflet1" >
<div class="leaflet2" >
<div class="leaflet3">
<div class="leaflet4">
<svg class="leaflet5" >
<g>
<path stroke="#000000" fill="#ffcc00" class="leaflet6" ></path>
</g>
</svg>
</div>
</div>
</div>
</div>
</article>
</section>
</body>
</html>


How to select this element using querySelector?

Answer

You need to use return !!document.querySelector('path[fill="#ffcc00"]') it will return true if the selector is exist, otherwise false.

var page = require('webpage').create();
var url = 'http://localhost:9001/build/browser/index.html';

page.open(url, function (status) {
  if (status === 'success') {
    var input = page.evaluate(function() {
      return !!document.querySelector('path[fill="#ffcc00"]'); // returns true if the selector is exist, otherwise false.
    }, 2000);
    console.log(input);
    phantom.exit();
  }
});