簡體   English   中英

未找到 Puppeteer 選擇器

[英]Puppeteer selector not being found

我在調試為什么未單擊查詢選擇器時遇到問題 - 我可以在 chrome 中搜索它,而且如果在開發工具中使用 document.querySelector() 它會找到查詢,這讓我相信它是正確的,然而它並沒有按下它,只是超時了

點擊方法:

async function click(page, selector, timeout) {
await beforeAction(page, timeout);
await page.waitForSelector(selector);
await page.waitFor(200);
await page.click(selector);
}

執行的主要方法:

async function existingStart(page) {
await loadCookies(page);
await page.goto(
    "https://mc.s7.exacttarget.com/cloud/#app/Email/C12/Default.aspx?entityType=none&entityID=0&ks=ks%23Content"
    , {
        waitUntil: 'load',
        timeout: 0
    }
);
await page.waitFor(200);
const contentBuilderFrame = await findFrame(page, "contentbuilder");
const searchField = await contentBuilderFrame.$(".contentsearch > input");
searchField.focus();
await page.keyboard.type("20200903");
await page.waitFor(500);
await page.keyboard.press('Enter');
await page.waitFor(5000);
// Screenshot to check page state
await page.screenshot({

    path: "./screenshot.png",

    fullPage: true

});
await page.waitFor(500);
// Times out
await click(page, '#contentRepeater > div.repeater-viewport > div.repeater-canvas.scrolling > div > div > table > tbody > tr:nth-child(1) > td:nth-child(3) > div > div > div > div')

}

如果我在單擊選擇器之前調用 find Iframe 方法:

await findFrame(page, "contentbuilder");

什么都沒有發生,它因 JSHandler 問題而出錯,有沒有人發生過類似的事情? 難道問題出在 Iframe 上? 奇怪的是 searchField 輸入和按鍵都正常。 此外,它是相同的 iframe,所以我不應該調用 findFrame 兩次。

行動前:

async function beforeAction(page, timeout) {
if (timeout != null) {
await page.waitFor(timeout);
}

var isLoading = await isPageLoading(page);

while (isLoading) {
await new Promise((resolve) => setTimeout(resolve, 1000));
isLoading = await isPageLoading(page);
 }
}

由於我們在評論中得出了答案,所以我將其張貼在這里以供遇到此問題的其他人使用。

由於目標選擇器位於 iframe ( contentbuilder ) 中,因此要作為參數傳遞給 function click的上下文不是page ,而是 iframe 元素: contentBuilderFrame

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM