Кукловод: поле ввода, выбранное по идентификатору, возвращает неопределенное - PullRequest
0 голосов
/ 04 февраля 2020

enter image description here

Выше вы можете видеть элемент ввода с помощью селектора #account_email. Но простой функциональный тест, который ожидает выбора и ввода в это поле, каждый раз терпит неудачу. Я не могу понять почему.

Есть ли синтаксическая ошибка ниже? Этот тип выбора подвержен ошибкам? Любые советы по исправлению этого приветствуются.

// A functonal test file being run by jest.js
// jest-puppeteer

test('[functional] log into shopify"', async () => {

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

      // go to login page
      await page.goto("https://partners.shopify.com/1185756/apps/3207477/test", {waitUntil : "load"});
      console.log(page.url, `=====arrived at shopify login screen=====`);

      // fill and submit form
      const emailInput = await page.focus("#account_email");
      await emailInput.type(process.env.SHOPIFY_PARTNER_EMAIL);
// error seen in terminal
TypeError: Cannot read property 'type' of undefined

      22 |       // email screen
      23 |       const emailInput = await page.focus("#account_email");
    > 24 |       await emailInput.type(process.env.SHOPIFY_PARTNER_EMAIL);
         |                        ^
      25 |       

// 

1 Ответ

1 голос
/ 04 февраля 2020

focus не возвращает дескриптор элемента. Вы могли бы сделать что-то вроде этого:

const emailInput = await page.waitForSelector("#account_email");
await emailInput.focus();
await emailInput.type(process.env.SHOPIFY_PARTNER_EMAIL);
...