当前位置: 首页 > 知识库问答 >
问题:

用木偶师测试AWS amplify react应用程序

卓星波
2023-03-14

我想用AWS amplify身份验证(使用cognito)测试react应用程序。

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

等待页面。waitForSelector(“电子邮件”);等待页面。键入“#email”email@example.com“,{延迟:500});

等待page.wait选择器("#通过");等待page.type("#通过","秘密",{延迟: 500});

然后提交事件

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

表格如下

表单登录放大

正如您所看到的,html元素form username只是输入#username,但是如果我尝试用普通JS选择元素,它就不起作用了

我找不到输入元素

如何设置表单字段的值并将表单提交给puppeter

共有2个答案

澹台宾白
2023-03-14

如果我错了,这可能是一个令人沮丧的答案,但从这个截图来看,你似乎没有使用正确的id(https://i.stack.imgur.com/v0bMd.png)看起来id实际上是用户名。在第二个屏幕截图中输入(https://i.stack.imgur.com/PslyH.png)你似乎认为id在username

ID和名称标记必须以字母([a-Za-z])开头,后面可以跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“-”)、冒号(:”)和句点(“.”)。

希望这真的管用

田丰
2023-03-14

这是因为用户名和密码输入在阴影dom中,所以无法找到它。退房https://github.com/Georgegriff/query-selector-shadow-dom,这个工具会让你的生活更轻松。

下面是一个使用Amplify default SignIn模式的虚构示例:

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();
    
});
 类似资料:
  • 我希望得到h3的内部文本,但我想忽略嵌套的跨度。 示例: 以下是我当前的代码: 它返回 也尝试了innerText没有成功,我不能设法从DOM删除跨度。

  • 问题内容: 我什至不理解标题中服务之间的基本区别。这些服务仅仅是提供软件来帮助您配置/组织/管理VM,还是为VM运行提供物理基础设施?换句话说,它们只是开发人员与AWS,Rackspace和Azure之间的便捷接口吗? 问题答案: 不完全是。 Chef / Puppet是“相同的”,它们是配置管理。尽管您可以使用它们来管理虚拟机或公共/私有云,但是大多数人并不倾向于那样使用它们。它们是配置管理。它

  • 问题内容: 有人知道如何获取元素的或文本吗?甚至更好;如何单击具有特定元素的元素?这就是普通JavaScript的工作方式: 在此先感谢您的帮助! 问题答案: 这就是我获取innerHTML的方式:

  • 首先上来我必须给用友的hr一个大大的赞,人真的很好很好,平易近人。整个面试下来完全就是轻松加愉快的状态。 回归正题: 会问了解用友吗?是从哪方面进行了解的 1.首先上来并没有叫自我介绍(我还准备了下) 2.整个面试过程都是问的简历上的东西,整体难度不大 3.问到了数据库的多表联查 4.然后就是问到是否有过投递岗位的实习经历(因为我没有所以,面试官很无奈) 5.有一个重要的信息就是用友现在底层都是用

  • 根据这个链接,我可以创建一个测试应用程序,Robolectric将自动开始在测试中使用它。我不能让它运转起来。 我正在使用Dagger进行依赖注入,并为和创建了注入包装类。那么我的每个活动都扩展了包装器活动类,而不是简单的旧。

  • 我用cocos2d开发了一个游戏,它在我的个人网站上。当我在我的Mi手机上安装它时,在安装过程中,它显示我与忽略按钮木马错误。但在另一部手机上却什么也没显示。为什么它只在MI手机上检测我的应用程序为木马。请建议一些解决方案来删除此警告。请帮忙。