- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在预定义元素变量并随后在 Cypress 10 w/Cucumber 中使用它们时,我得到了奇怪的结果。考虑这个登录测试:
Given("I'm logged in as Default user", () => {
cy.visit('/');
let usernameField = cy.get('#myUsernameInputField');
let passwordField = cy.get('#myPasswordInputField');
let signInButton = cy.get('#mySignInButton');
usernameField.clear();
usernameField.type('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="82effbd7f1e7f0ece3efe7c2e5efe3ebeeace1edef" rel="noreferrer noopener nofollow">[email protected]</a>');
passwordField.type('myPassword');
signInButton.click();
});
这会导致用户名和密码都被输入到passwordField中,并且signInButton永远不会被单击。只有当我按时间顺序重新排列变量时,此测试才会按预期运行:
Given("I'm logged in as Default user", () => {
cy.visit('/');
let usernameField = cy.get('#myUsernameInputField');
usernameField.clear();
usernameField.type('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="83eefad6f0e6f1ede2eee6c3e4eee2eaefade0ecee" rel="noreferrer noopener nofollow">[email protected]</a>');
let password = cy.get('#myPasswordInputField');
password.type('myPassword');
let signInButton = cy.get('#mySignInButton');
signInButton.click();
});
我计划最终将这些变量移至页面对象文件中。但在测试中,当我预先定义它们并稍后尝试使用它们时,它们的行为并不符合预期。这是为什么?
最佳答案
基本上,您不应该在纯 JavaScript 变量中保存对查询结果的引用。
原因是,Cypress 运行在队列系统上,队列在任何时候都只有一个“主题”。
您应该将队列视为与测试执行异步运行的单独线程或执行进程,因此线程中的变量可能与队列主题不同步。
执行此操作的传统方法是立即使用查询结果,例如
cy.get('#myUsernameInputField').type('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3855416d4b5d4a5659555d785f55595154165b5755" rel="noreferrer noopener nofollow">[email protected]</a>');
然后继续下一个查询(密码)。
如果由于某种原因您确实需要查询结果的引用,Cypress 有一个alias
机制来处理它
cy.get('#myUsernameInputField').as('username)
...
// later in the test
cy.get('@username').type('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8ae7f3dff9eff8e4ebe7efcaede7ebe3e6a4e9e5e7" rel="noreferrer noopener nofollow">[email protected]</a>');
关于angular - 为什么预定义变量在 Cypress 中的行为不符合预期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73242204/
我对我接管的项目有疑问。我正在转换其他人编写的 MS Access 应用程序并将其转换为 MySQL/PHP Web 应用程序。其中大部分已经完成,但是,当涉及到此应用程序的调度部分时,我处于停滞状态
我有一个带有 @Scheduled 注释的方法。此方法包含长时间运行、昂贵的操作。我担心当计划的方法开始运行时应用程序会变慢。有什么办法可以为预定方法分配优先级吗?在 Spring 中启动低优先级后台
我的大学有一个预订项目房间的网站;但除非你很幸运或者半夜醒着,否则要订到房间并不容易。因此,我编写了一个 JS 片段来填写所有必要的字段并提交表单。 但是我如何自动化这个过程呢? 我的目的基本上是加载
我正在评估处理大量排队消息的可能解决方案,这些消息必须在特定日期和时间交付给工作人员。执行它们的结果主要是对存储数据的更新,它们最初可能是也可能不是由用户操作触发的。 例如,想想你在一个假设的大型星际
@Scheduled documentation here声明 fixedRateString值可以是 the delay in milliseconds as a String value, e.g
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
我有一个有趣的情况。我解析了几个新闻发布网站,想通过调度程序将它们保存到数据库中。但是保存时出现错误。由于交易后写条件 described here . 我的模型类是 @Entity @Table(n
我正在阅读 Java Concurrency in Practice 并遇到以下代码片段。 public static void timedRun(final Runnable r,
使用 Azure 数据工厂,是否可以对驻留在 Azure SQL 数据库中的多个(不是全部)表中的所有行执行预定的 1:1 复制/克隆到另一个 Azure SQL 数据库(在本例中为 Azure SQ
我是一名优秀的程序员,十分优秀!