Ich möchte die Position von Elementen auf einer Seite mit Watir und PhantomJS erkennen. Mein zweiter Ansatz mit Capybara ergab den gleichen Offset.Merkwürdiger Offset mit Watir/Capybara und PhantomJS
Während die Elemente auf der linken Seite gut aussehen, wird die rechte Seite versetzt:
ich den Screenshot gemacht, bevor und nachdem ich die Positionen für jedes Element mit element.wd.location
packen, aber der Offset ist immer die gleiche . Ich benutzte evaluate_script
und .getBoundingClientRect()
mit Capybara.
Eines sieht mir verdächtig aus: Das Sucheingabefeld ist nicht korrekt geladen und zeigt nicht nur eine Fehlausrichtung, sondern auch eine andere Größe und die Lupe wird nicht angezeigt. Ich weiß nicht, ob das den Offset verursacht.
ich es mit reinem PhantomJS getestet 2.1.1 (phantomjs file.js
):
var fs = require('fs');
var page = require('webpage').create();
page.viewportSize = {
width: 1024,
height: 768
};
page.open('http://en.wikipedia.org/', function() {
var positions = page.evaluate(function() {
positions = [];
elements = document.getElementsByTagName('IMG');
for (var i=0, l=elements.length; i<l; i++) {
pos = elements[i].getBoundingClientRect();
positions.push(pos.left + ' ' + pos.top);
};
return positions;
});
fs.write('test.txt', positions.join("\r\n"), 'w');
page.render('test.png');
phantom.exit();
});
Gleiches Ergebnis: Wenn Sie die test.png öffnen, sehen Sie das Bild auf der rechten Seite (links: 952px, oben: 259px), aber die test.txt zeigt es nach links verschoben (links: 891px).
Wissen Sie, was dieses Problem verursachen könnte?
Der Fehlstellungen Inhalt auf der rechten Seite ausgerichtet ist, Die Lücke ist wahrscheinlich auf die Art und Weise zurückzuführen, wie PhantomJS den Screenshot erstellt. Meine Vermutung ist, dass es zuerst das Ansichtsfenster auf die Größe der Seite ändert, um einen vollständigen Screenshot zu erhalten. Dadurch verschwindet jedoch die Bildlaufleiste und es bleibt mehr Platz für den Inhalt. –