У меня есть код на 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.
Может кто-нибудь посоветовать мне, как решить эту проблему?