木偶戏滚动并点击按钮

时间:2018-03-28 16:34:28

标签: javascript html node.js screenshot puppeteer

我正在使用木偶戏试图截取一个网站的截图,但首先我必须按一个名为“Lifetime”的按钮,其选择器是:

#profile > div.trn-profile.dtr-profile > div > div.content > div:nth-child(1) > div.material-card > a.btn.btn-season.selected

我必须首先向下滚动按下生命周期按钮并截取“solo”,“duo”和“squad”统计数据的截图:

target photo:

我在非无头模式下尝试这一点,以确保它的工作原理,但它似乎没有工作。我有我的代码,它将向下滚动到元素但不使用page.click(SELECTOR)单击它。到目前为止,我已经能够打开网页并向下滚动,但当我尝试使用page.click它不起作用。一旦我弄清楚如何按“生命周期”按钮

,我会担心屏幕截图

我的代码是:

var puppeteer = require('puppeteer');

let scrape = async () => {

const browser = await puppeteer.launch({
    headless: false
});

const page = await browser.newPage();

await page.goto('https://fortnitetracker.com/profile/pc/Twitch.BadGuyBen');
await page.tap('#profile > div.trn-profile.dtr-profile > div > div.content > div:nth-child(1) > div.material-card > a.btn.btn-season.selected');
await page.waitFor(2000);

await page.screenshot({
    path: 'stats.png',
    fullPage: true
})

browser.close();
};

scrape();
编辑:我将采用页面的全屏截图,然后使用jimp模块裁剪它,所以主要是我必须弄清楚如何按下按钮

编辑:我是一个白痴我正在使用错误的选择器我的坏:))

2 个答案:

答案 0 :(得分:0)

我使用了错误的选择器我应该使用的是:

#profile > div.trn-profile.dtr-profile > div > div.content > div:nth-child(1) > div.material-card > a:nth-child(2)

所以我的代码是:

var puppeteer = require('puppeteer');

let scrape = async () => {

const browser = await puppeteer.launch({
headless: false
});

const page = await browser.newPage();
var SELECTOR = "#profile > div.trn-profile.dtr-profile > div > div.content > div:nth-child(1) > div.material-card > a:nth-child(2)";

await page.goto('https://fortnitetracker.com/profile/pc/Twitch.BadGuyBen');
await page.focus(SELECTOR);
await page.waitFor(2000);
await page.click(SELECTOR);

await page.screenshot({
    path: 'stats.png',
    fullPage: true
})

browser.close();
};

scrape();

答案 1 :(得分:0)

await page.$eval('section[class="promocode__segment"]', 
   e => {e.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'end' })})
相关问题