Как получить URL после перенаправления с текущей страницы на другую с помощью Puppeteer? - PullRequest
0 голосов
/ 01 ноября 2019

Я Аадаршвелу ! Недавно началось тестирование моего кода WebApp с использованием Jest с Puppeteer . Итак, у меня есть страница, на которой все учетные данные были заполнены Puppeteer . Но когда щелкнул SummitButton ('signBtn') POST , процесс запускается

Есть ли тест? Этот процесс POST-запрос? ..

Или

Как узнать, что тест завершен?

Или

Как получить URL страницы перенаправления во время выполнения теста?

Это мой код!

const puppeteer = require('puppeteer');
const timeOut = 100 * 1000;

test("Full E2E Test!" , async () => {

    const browser = await puppeteer.launch({
        headless: false,
        slowMo:30,
        args: ['--window-size=1920,1080']
    });

    const page = await browser.newPage();

    await page.goto('https://mypass-webapp.herokuapp.com/signUp');

    await page.click('input#email');
    await page.type('input#email', 'Automation@puppeteer.com');
    await page.click('input#username');
    await page.type('input#username' , "puppeteer");
    await page.click('input#password');
    await page.type('input#password' , "puppeteer");
    await page.click('#signBtn').then(await console.log(page.url()));

    // Here I Need a Test That Checks The Current Page!

    await browser.close();

} , timeOut);

1 Ответ

2 голосов
/ 01 ноября 2019
  1. Есть ли тест, который обрабатывает POST-запрос? ..
const [response] = await Promise.all([
  page.waitForNavigation() // This will set the promise to wait for navigation events
  page.click('input[type="submit"]') // After clicking the submit
// Then the page will be send POST and navigate to target page
]);
// The promise resolved

Как узнать, что тест завершен?
const [response] = await Promise.all([
  page.waitForNavigation('networkidle2'), // The promise resolves after navigation has finished after no more than 2 request left
  page.click('a.my-link'), // Clicking the link will indirectly cause a navigation
]);
// The promise resolved

Как получить URL-адрес страницы перенаправления во время выполнения теста?

Например, если веб-сайт http://example.com имеет одно перенаправление на https://example.com,, тогда цепочка будетсодержать один запрос:

const response = await page.goto('http://example.com');
const chain = response.request().redirectChain();
console.log(chain.length); // Return 1
console.log(chain[0].url()); // Return string 'http://example.com'

Если на сайте https://google.com нет переадресаций, то цепочка будет пустой:

const response = await page.goto('https://google.com');
const chain = response.request().redirectChain();
console.log(chain.length); // Return 0

...