click Continue if 'This game contains mature content' or 'Device not supported'
This commit is contained in:
parent
96432884b3
commit
93464ace82
1 changed files with 12 additions and 3 deletions
|
|
@ -60,14 +60,14 @@ const newStealthContext = async (browser, contextOptions = {}) => {
|
||||||
(async () => {
|
(async () => {
|
||||||
const browser = await chromium.launch({
|
const browser = await chromium.launch({
|
||||||
channel: 'chrome', // https://playwright.dev/docs/browsers#google-chrome--microsoft-edge
|
channel: 'chrome', // https://playwright.dev/docs/browsers#google-chrome--microsoft-edge
|
||||||
headless: false,
|
// headless: false,
|
||||||
});
|
});
|
||||||
/** @type {import('playwright').BrowserContext} */
|
/** @type {import('playwright').BrowserContext} */
|
||||||
const context = await newStealthContext(browser, {
|
const context = await newStealthContext(browser, {
|
||||||
storageState: 'auth.json',
|
storageState: 'auth.json',
|
||||||
viewport: { width: 1280, height: 1280 },
|
viewport: { width: 1280, height: 1280 },
|
||||||
});
|
});
|
||||||
if (!debug) context.setDefaultTimeout(10000);
|
if (!debug) context.setDefaultTimeout(10000); // 10s, default 30s
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
if (debug) console.log('userAgent:', await page.evaluate(() => navigator.userAgent));
|
if (debug) console.log('userAgent:', await page.evaluate(() => navigator.userAgent));
|
||||||
await page.goto('https://www.epicgames.com/store/en-US/free-games');
|
await page.goto('https://www.epicgames.com/store/en-US/free-games');
|
||||||
|
|
@ -80,12 +80,21 @@ const newStealthContext = async (browser, contextOptions = {}) => {
|
||||||
await page.click('[data-testid="offer-card-image-landscape"]');
|
await page.click('[data-testid="offer-card-image-landscape"]');
|
||||||
const game = await page.locator('h1 div').first().innerText();
|
const game = await page.locator('h1 div').first().innerText();
|
||||||
console.log('Current free game:', game);
|
console.log('Current free game:', game);
|
||||||
|
// click Continue if 'This game contains mature content recommended only for ages 18+'
|
||||||
|
if (await page.locator(':has-text("Continue")').count() > 0) {
|
||||||
|
console.log('This game contains mature content recommended only for ages 18+');
|
||||||
|
await page.click('button:has-text("Continue")');
|
||||||
|
}
|
||||||
const btnText = await page.locator('[data-testid="purchase-cta-button"]').innerText();
|
const btnText = await page.locator('[data-testid="purchase-cta-button"]').innerText();
|
||||||
if (btnText.toLowerCase() == 'in library') {
|
if (btnText.toLowerCase() == 'in library') {
|
||||||
console.log('Already in library! Nothing to claim.');
|
console.log('Already in library! Nothing to claim.');
|
||||||
} else {
|
} else {
|
||||||
await page.click('[data-testid="purchase-cta-button"]');
|
await page.click('[data-testid="purchase-cta-button"]');
|
||||||
await page.click('button:has-text("Continue")');
|
// click Continue if 'Device not supported. This product is not compatible with your current device.'
|
||||||
|
if (await page.locator(':has-text("Continue")').count() > 0) {
|
||||||
|
console.log('Device not supported. This product is not compatible with your current device.');
|
||||||
|
await page.click('button:has-text("Continue")');
|
||||||
|
}
|
||||||
// it then creates an iframe for the rest
|
// it then creates an iframe for the rest
|
||||||
// await page.frame({ url: /.*store\/purchase.*/ }).click('button:has-text("Place Order")'); // not found because it does not wait for iframe
|
// await page.frame({ url: /.*store\/purchase.*/ }).click('button:has-text("Place Order")'); // not found because it does not wait for iframe
|
||||||
const iframe = page.frameLocator('#webPurchaseContainer iframe')
|
const iframe = page.frameLocator('#webPurchaseContainer iframe')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue