我正在使用 selenium java script exceuter 執行以下 javascript,我想從 fetch 呼叫回傳回應并將其存盤在代碼中的 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.log(data);\n"
"return data;\n"
"}();\n";
Object str = js.executeAsyncScript(location);
uj5u.com熱心網友回復:
我不是如何轉義引號,但 javascript 應該是:
let url = "https://..."
fetch(url).then(r => r.blob()).then(arguments[0])
arguments[0] 是回呼,需要在 30 秒內呼叫,否則超時
uj5u.com熱心網友回復:
采用setTimeout()
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
async function asyncCall() {
console.log('calling');
const result = await resolveAfter2Seconds();
console.log(result);
// expected output: "resolved"
}
異步函式
如何使用executeAsyncScript方法dinorg.openqa.selenium.JavascriptExecutor
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/477084.html
標籤:javascript 爪哇 硒 硒网络驱动程序 获取 API
上一篇:Selenium單選按鈕不起作用
