如何在不使用Puppeteer进行测试的类的情况下识别输入?

时间:2019-04-30 12:09:41

标签: node.js chromium puppeteer

我已经成功地使用Puppeteer开发了一个带有Reactjs应用程序的Nodejs集成测试,但是遇到了一个问题,我想测试不同输入的类型。

我为标题输入了一个内容,为主题,电子邮件正文和电子邮件接收者输入了另一个内容,但它们都是输入,没有类别绑定,而是像这样有一个名称绑定:

<input name="title"...

<input name="subject"...

<input name="body"...

以此类推。

我可以捕获该name属性吗?如果可以,它的语法是什么,以便可以测试在这些输入中的键入。

这是我到目前为止的测试:

describe('And using valid inputs', async () => {
    beforeEach(async () => {
      await page.type('input', 'My Title')

    })

    test('Submitting takes user to review screen', async () => {

    })

    test('Submitting then saving adds survey to index page', async () => {

    })
  })

  describe("And using invalid inputs", async () => {
    beforeEach(async () => {
      await page.click("form button.teal");
    });

    test("the form shows an error message", async () => {
      const inputError = await page.getContentsOf(".red-text");

      expect(inputError).toEqual("You must provide a value");
    });
  });

如您所见,我成功地将form元素和类用于无效输入,但是现在我需要能够区分输入类型,以便成功完成输入元素的正确键入,我认为这本身await page.type('input', 'My Title')无效。 Puppeteer怎么知道我要指的是哪种输入类型?

1 个答案:

答案 0 :(得分:0)

您可以将name视为属性。并使用带有该属性的CSS Selector来匹配输入。

await page.type('INPUT[name=err_email]', 'My Title')