Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用木偶演员测试AWS amplify react应用程序_Javascript_Reactjs_Aws Amplify - Fatal编程技术网

Javascript 用木偶演员测试AWS amplify react应用程序

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时,它不起作用-输入元素没有被找到 表格

我想使用cognito测试带有AWS amplify身份验证的react应用程序

第一步是登录应用程序,填写输入文件、电子邮件和密码,然后提交登录表单

等待page.waitForSelectoremail; 等待page.typeemail,email@example.com,{延迟:500}

等待page.waitForSelectorpass; 等待page.typepass,secret,{delay:500}

然后提交事件

但是使用amplify时,它不起作用-输入元素没有被找到

表格如下

正如您所看到的,html元素formusername只是inputusername,但是如果我尝试使用纯JS选择元素,它就不起作用了


我如何设置表单字段的值并为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();
    
});

请解释你的代码做什么以及它是如何做的。请解释你的代码做什么以及它是如何做的。