Задать вопрос
@DIGIUS

Как сделать клик по элементам PhantomJS?

Написал на коленке код для работы с OCR Yandex Translate в среде PhantomJS. Для перевода текста картинки с английского на русский. код следующий:

var webPage = require('webpage');
var page = webPage.create();
var page = require('webpage').create();
if(exist('photo.jpg')){
    remove('photo.jpg'); //удаление старых отладочных файлов
}
if(exist('example.html')){
    remove('example.html'); //удаление старых отладочных файлов
}
page.viewportSize = {
  width: 480,
  height: 800
};
page.open('https://translate.yandex.ru/ocr', function() {
page.uploadFile('input[id="fileInput"]', 'image.jpg'); //загрузка файла на сервер
page.evaluate(
        function( mouseclick_fn ) {
            var element = jQuery( 'rect' )[0];
            setTimeout(function(){mouseclick_fn( element );},5000);
        },
       mouseclick
   );
   setTimeout(function(){page.render('photo.jpg');file('example.html',page.content);phantom.exit();},10000); //для отладки
});
page.onLoadFinished = function() {
  console.log("load finished");
};
function remove(file){
var fs = require('fs');
fs.remove(file);
}
function exist(file){
var fs = require('fs');
if (fs.exists(file))
return true;
else
return false;
}
function file(filename,content){
var fs = require('fs');
fs.write(filename, content, 'w');
}
function mouseclick( element ) {
    var event = document.createEvent( 'MouseEvents' );
    event.initMouseEvent( 'click', true, true, window, 1, 0, 0 );
    element.dispatchEvent( event );
}

Нажимать на rect не хочет даже при команде в консоль хрома document.getElementsByTagName("rect")[0].click. Думаю эмитировать нажатие мышкой, но все примеры которые брал с интернета тоже не работали. Как заставить этот кусок кода работать? Заранее спасибо.
  • Вопрос задан
  • 435 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@DIGIUS Автор вопроса
Ответ нашёлся при решении задачи другим путём.
На момент текущей версии переводчика (19.03.2019) после загрузки картинки не нужно кликать по результатам перевода, они приходят сразу после загрузки картинки на сервер в 83 заголовке (при учёте нумерации) ответа сервера ( Json) .
На этом моменте их нужно только получить и распарсить.
К сожалению phantomjs в текущем виде как бы я не пытался читать не хочет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@bagzon
Backend PHP, NodeJs, JS
Ну во первых он уже не поддерживается и устарел)
Попробуй лучше https://github.com/GoogleChrome/puppeteer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы