ROK*_*OKI 6 javascript chromium node.js google-chrome-devtools puppeteer
我从 中选择选项select -> option,每次页面重新加载时,首先当我单击下拉列表时,我会收集我想要选择的所有 elementHandle。我想通过所有这些。我只能选择第一个,然后出现此错误:
JSHandles 只能在它们创建的上下文中进行评估
所以我试图在每次页面重新加载时重新创建 ElementHandles。我有这个代码:
功能一:
case:click
try {
await page.evaluate((el) => {
return el.click()
}, 'select');
await page.waitFor(1500);
} catch (e) {
console.log(e);
}
break;
case: getNavigation
let navigation = await page.$$('select > option');
break;
case: doActions
let i = 0;
for (elements in navigation) {
let result = await function2(commands, i, page)
i++;
}
break;
Run Code Online (Sandbox Code Playgroud)
然后功能2:
async function function2(commands, i, inPage){
let page = inPage;
if (!page) {
const browser = await puppeteerLambda.getBrowser({ headless: true, slowMo: 100, args: ['--no-sandbox', '--disable-setuid-sandbox', '--single-process', '--start-fullscreen', '--window-size=1413,749']}); //TODO: setup Proxy
console.log('opening new page');
page = await browser.newPage();
....
}
let navigation;
case: click
try {
await page.evaluate((el) => {
return el.click()
}, 'select');
await page.waitFor(1500);
} catch (e) {
console.log(e);
}
case: getNavigation
navigation = await page.$$('select > option'); //recreating elementHandle array
case: selectOption
const optionValue = await page.evaluate(value => value.value, navigation[i]);
await page.select('select', optionValue);
case: extract
......
Run Code Online (Sandbox Code Playgroud)
我再次选择选项 2 次,然后出现此错误:
错误:协议错误(Runtime.callFunctionOn):找不到具有指定 id 的上下文
谁能帮我解决这个问题?
| 归档时间: |
|
| 查看次数: |
4647 次 |
| 最近记录: |