簡體   English   中英

如何確保點擊完成?

[英]How to make sure click is finalized?

我使用以下代碼查詢https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2

#!/usr/bin/env node
// vim: set noexpandtab tabstop=2:

const puppeteer = require('puppeteer');
const fs = require('fs').promises;

const url = process.argv[2];

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    try {
        await page.goto(url, { waitUntil: 'networkidle2' });
        const content = await page.content();
        //console.log(content);
        page.on('response', async response => {
            console.log("xxx" + response.url());
            response.buffer().then(function(data) {
                fs.writeFile('/tmp/response.json', data);
                //console.log(data);
            });
        });
        const linkHandlers = await page.$x('//div[@data-ga-category = "GeneHancer"]//a[@data-role = "show-all"]');
        if (linkHandlers.length > 0) {
            await linkHandlers[0].click();
        } else {
            throw new Error("Link not found");
        }

        const content1 = await page.content();
        //console.log(content1);
    } catch (e) {
        console.error(e);
        process.exit(1);
    } finally {
        await browser.close();
    }
})();

命令就是這樣調用的。

./main.js 'https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2'

但是行console.log("xxx" + response.url()); 不叫。

當我取消注釋//console.log(content1); ,可以打印 url https://www.genecards.org/gene/api/data/Enhancers?geneSymbol=BSCL2 但是打印的內容沒有GeneHancer (GH) Regulatory Elements for BSCL2 Gene表中顯示的所有條目。

我認為click()的效果還沒有完全發生。 如何等待它完全更新網頁? 以及如何在收到響應后顯示https://www.genecards.org/gene/api/data/Enhancers?geneSymbol=BSCL2的內容?

單擊鏈接后,您可以檢查加載范圍是否可見。 如果是這樣,您可以等到它被隱藏。 它可能是這樣的:

if ((await page.$$('#enhancerControllerComponent > div > div.ng-scope > div > div:nth-child(2) > span.gc-loading:not(.ng-hide)')).length) {
    await page.waitForSelector('#enhancerControllerComponent > div > div.ng-scope > div > div:nth-child(2) > span.gc-loading.ng-hide'));
}

您可能需要改進這些選擇器。 但這就是想法。 檢查加載 state 是否可見,等待隱藏。

暫無
暫無

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

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