Puppeteer 팀 전체가 Playwright를 만들기 위해 Microsoft로 옮겼습니다.
Playwright는 내가 알 수 있는 한 Puppeteer와 거의 동일한 API를 사용합니다.
필자와 같은 타입 스크립트 사용자의 한 가지 큰 단점은 꼭두각시 인형처럼 타입 정의 파일이 아직 없다는 것입니다.
정의 파일을 만드는 방법을 배울 때가 되었을 것입니다.
https://javascriptwebscrapingguy.com/jordan-plays-with-playwright/
여기서 Playwright 설명서를 확인하십시오.
puppeteer로 웹 스크래핑을 배우려면 여기를 확인하십시오.
Playwright와 puppeteer는 주로 자동화 된 웹 테스트를 위해 만들어졌으며 이것으로 큰 일을 합니다.
웹 스크래핑 및 지루한 작업 자동화에 주로 사용하지만 이러한 도구에는 테스트에 도움이 되는 많은 부분이 있습니다.
그것이 보여주는 첫 번째 예 중 하나는 다른 장치로 테스트하는 것이 얼마나 쉬운 지입니다. 코드 작동 방식을 살펴보십시오.
const pixel2 = devices['Pixel 2'];
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({
viewport: pixel2.viewport,
userAgent: pixel2.userAgent,
geolocation: { longitude: longitude, latitude: latitude },
permissions: { 'https://www.google.com': ['geolocation'] }
});
const page = await context.newPage();
await page.goto('https://maps.google.com');
await page.click('text="Your location"');
await page.waitForRequest(/.*pwa\/net.js.*/);
await page.screenshot({ path: `${longitude}, ${latitude}-android.png` });
await browser.close();
pixel2는 Playwright (const playwright = require ( 'playwright');)에서 가져 오며 여기에서 해당 장치와 함께 제공되는 모든 통계 만 표시 할 수 있습니다. 꽤 놀랍고 간단합니다.
꼭두각시 인형과 함께 사용하지 않았기 때문에 지리적 위치에 약간의 혼란을 주었습니다.
나는 임의의 경도 및 위도 기능을 구축 한 다음이 임의의 위치 각각에서 Google지도를 타격하려고 시도하고 그 종류의 것이 Google을 차단하는 데 영향을 미치는 방법을 보았습니다.
20 번의 시도 후에 구글은 아무 것도 표시하지 않았다. 이 예제에서는 5 개의 루프만 있습니다.
async function tryDevices() {
// Loop five times with random locations
for (let i = 0; i < 5; i++) {
const latitude = getRandomInRange(-90, 90, 3);
const longitude = getRandomInRange(-90, 90, 3);
const pixel2 = devices['Pixel 2'];
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({
viewport: pixel2.viewport,
userAgent: pixel2.userAgent,
geolocation: { longitude: longitude, latitude: latitude },
permissions: { 'https://www.google.com': ['geolocation'] }
});
const page = await context.newPage();
await page.goto('https://maps.google.com');
await page.click('text="Your location"');
await page.waitForRequest(/.*pwa\/net.js.*/);
await page.screenshot({ path: `${longitude}, ${latitude}-android.png` });
await browser.close();
}
}
// Longitude and latitude function
function getRandomInRange(from, to, fixed) {
return (Math.random() * (to - from) + from).toFixed(fixed) * 1;
}
등록된 댓글이 없습니다.