Javascript 用木偶演员测试AWS amplify react应用程序
我想使用cognito测试带有AWS amplify身份验证的react应用程序 第一步是登录应用程序,填写输入文件、电子邮件和密码,然后提交登录表单 等待page.waitForSelectoremail; 等待page.typeemail,email@example.com,{延迟:500} 等待page.waitForSelectorpass; 等待page.typepass,secret,{delay:500} 然后提交事件 但是使用amplify时,它不起作用-输入元素没有被找到 表格如下 正如您所看到的,html元素formusername只是inputusername,但是如果我尝试使用纯JS选择元素,它就不起作用了Javascript 用木偶演员测试AWS amplify react应用程序,javascript,reactjs,aws-amplify,Javascript,Reactjs,Aws Amplify,我想使用cognito测试带有AWS amplify身份验证的react应用程序 第一步是登录应用程序,填写输入文件、电子邮件和密码,然后提交登录表单 等待page.waitForSelectoremail; 等待page.typeemail,email@example.com,{延迟:500} 等待page.waitForSelectorpass; 等待page.typepass,secret,{delay:500} 然后提交事件 但是使用amplify时,它不起作用-输入元素没有被找到 表格
我如何设置表单字段的值并为puppeter提交表单?如果我错了,这可能是一个令人沮丧的答案,但您似乎没有使用正确的id。从这个屏幕截图判断,id似乎实际上是用户名。输入,在第二个屏幕截图中,您似乎认为id停止在用户名处 ID和名称标记必须以字母[a-Za-z]开头,后面可以是任意数量的字母、数字[0-9]、连字符、下划线、冒号和句点
希望这真的管用如果我错了,这可能是一个令人沮丧的答案,但似乎你没有使用正确的id。从这个屏幕截图判断,id实际上是username.input,在第二个屏幕截图中,你似乎认为id停留在username ID和名称标记必须以字母[a-Za-z]开头,后面可以是任意数量的字母、数字[0-9]、连字符、下划线、冒号和句点
希望这真的有效这是因为用户名和密码输入在阴影dom中,这就是为什么它找不到它的原因。看看吧,这个工具会让你的生活更轻松 下面是一个使用放大默认信号模式的虚构示例:
const { Given, When, Then, setDefaultTimeout } = require('@cucumber/cucumber');
const { QueryHandler, } = require("query-selector-shadow-dom/plugins/puppeteer");
const puppeteer = require('puppeteer');
setDefaultTimeout(60 * 1000);
Given('I visit the myWebsitewebsite', async function () {
this.browser = await puppeteer.launch({
headless: true,
devtools: false
});
this.page = await this.browser.newPage();
await puppeteer.registerCustomQueryHandler('shadow', QueryHandler);
await this.page.goto('https://example.mywebsite.com', {
waitUntil: 'networkidle0',
});
});
When('enter my credentials', async function () {
const userNameField = await this.page.waitForSelector("shadow/#username");
const passWordField = await this.page.waitForSelector("shadow/#password");
await userNameField.type("xxxxxxxxx");
await passWordField.type("xxxxxxxxxxx");
await this.page.keyboard.press("Enter")
});
Then('I see my dashboard', async function () {
await this.page.waitFor("#dashboard-card");
await this.browser.close();
});
这是由于用户名和密码输入位于阴影dom中,因此无法找到它。看看吧,这个工具会让你的生活更轻松 下面是一个使用放大默认信号模式的虚构示例:
const { Given, When, Then, setDefaultTimeout } = require('@cucumber/cucumber');
const { QueryHandler, } = require("query-selector-shadow-dom/plugins/puppeteer");
const puppeteer = require('puppeteer');
setDefaultTimeout(60 * 1000);
Given('I visit the myWebsitewebsite', async function () {
this.browser = await puppeteer.launch({
headless: true,
devtools: false
});
this.page = await this.browser.newPage();
await puppeteer.registerCustomQueryHandler('shadow', QueryHandler);
await this.page.goto('https://example.mywebsite.com', {
waitUntil: 'networkidle0',
});
});
When('enter my credentials', async function () {
const userNameField = await this.page.waitForSelector("shadow/#username");
const passWordField = await this.page.waitForSelector("shadow/#password");
await userNameField.type("xxxxxxxxx");
await passWordField.type("xxxxxxxxxxx");
await this.page.keyboard.press("Enter")
});
Then('I see my dashboard', async function () {
await this.page.waitFor("#dashboard-card");
await this.browser.close();
});
请解释你的代码做什么以及它是如何做的。请解释你的代码做什么以及它是如何做的。