Я выполняю приведенный ниже javascript, используя selenium java script exceuter, я хочу вернуть ответ от вызова выборки и хочу сохранить его в переменной java в коде. Но ниже код показывает тайм-аут сценария, какие-либо предложения, как я могу выполнить вышеуказанные требования???
String location = "!async function(){\n" +
"let data = await fetch(\"https://raw.githubusercontent.com/IbrahimTanyalcin/LEXICON/master/lexiconLogo.png\")\n" +
" .then((response) => response.blob())\n" +
" .then(data => {\n" +
" return data;\n" +
" })\n" +
" .catch(error => {\n" +
" console.error(error);\n" +
" });\n" +
"\n" +
"console.info(data);\n" +
"return data;\n" +
"}();\n";
Object str = js.executeAsyncScript(location);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте setTimeout()
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
async function asyncCall() {
console.info('calling');
const result = await resolveAfter2Seconds();
console.info(result);
// expected output: "resolved"
}
Как использоватьexecuteAsyncScriptmethodinorg.openqa.selenium.JavascriptExecutor
Я не знаю, как избежать кавычек, но javascript должен быть:
let url = "https://..."
fetch(url).then(r => r.blob()).then(arguments[0])
arguments[0] - это обратный вызов, он должен вызвать его в течение 30 секунд, иначе произойдет тайм-аут
Но как мне выполнить это предположение с помощью метода selenium executeAsyncScript(), я имею в виду, как сохранить окончательный результат в переменной java