Я хочу определить расположение элементов на странице с помощью Watir и PhantomJS. Мой второй подход с использованием Capybara привел к такому же смещению.
В то время как элементы на левой стороне выглядят хорошо, правая сторона смещена:
Я сделал снимок экрана до и после того, как захватил позиции для каждого элемента с помощью element.wd.location
, но смещение всегда одинаково. Я использовал evaluate_script
и .getBoundingClientRect()
с Capybara.
Одна вещь кажется мне подозрительной: поле ввода поиска загружается неправильно и показывает не только смещение, но и другой размер, а увеличительное стекло не отображается. Я не знаю, вызывает ли это смещение.
Я протестировал его с чистым PhantomJS 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();
});
Тот же результат: если вы откроете файл test.png, вы увидите изображение справа (слева: 952 пикселя, вверху: 259 пикселей), но оно отображается в test.txt. сдвинут влево (слева: 891px).
Вы знаете, что может вызвать эту проблему?