JS-код для загрузки бинарных файлов с помощью Selenium - PullRequest
1 голос
/ 04 мая 2019

У меня есть код на Java, который использует JavaScript и Selenium для загрузки бинарных файлов.Это работало год назад, но сейчас просто остановлено.

Похоже, что функция, на которую распространяется мой код, пропала после обновления браузера.Код корректно работает с Chrome, но не работает с Firefox.

Я не являюсь разработчиком JavaScript, поэтому очень трудно понять, что все эти изменения происходят с типами данных, которые вызывают сбой моего кода.

Iя уже пытался использовать Bing / Google / что угодно, чтобы найти решение, но безрезультатно.

private byte[] retriveBinaryFileContent(WebDriver driver) throws IOException {
    String script = "var url = arguments[0];"
            + "var callback = arguments[arguments.length - 1];"
            + "var xhr = new XMLHttpRequest();"
            + "xhr.open('GET', url, true);"
            + "xhr.responseType = \"arraybuffer\";"
            + "xhr.onload = function() {"
            + "  var arrayBuffer = xhr.response;"
            + "  var byteArray = new Uint8Array(arrayBuffer);"
            + "  callback(byteArray);"
            + "};"
            + "xhr.send();";
    Object response = ((JavascriptExecutor) driver).executeAsyncScript(script, "https://preventioncdnndg.org/eco-quartier/wp-content/uploads/sites/3/2015/09/tree-300x278.jpg");

    List<Long> byteList = (ArrayList<Long>) response;
    byte[] bytes = new byte[byteList.size()];
    for (int i = 0; i < byteList.size(); i++) {
        bytes[i] = (byte) (long) byteList.get(i);
    }

    return bytes;
}

Полученное сообщение об ошибке:

ПРЕДУПРЕЖДЕНИЕ. Обработка запроса была прерваназа исключениемОшибка: доступ к данным TypedArray через Xrays является медленным и запрещен для поощрения кода выполнения.Чтобы скопировать TypedArrays через границы источника, рассмотрите возможность использования Components.utils.cloneInto () .

Проблема явно в коде JS, а не в коде Java.

Может кто-нибудь посоветовать мне, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...