scroll - Cypress 滚动获取一个元素

标签 scroll cypress

我目前正在探索自动化工具 Cypress,但我对最基本的功能有疑问。

我想做的是 访问此 URL:https://www.unicef.fr/se-connecter/
点击密码输入,然后输入密码。

但是每当我要输入代码时,屏幕会向下滚动,并且会收到一条错误消息,提示无法找到输入的密码。

这是我使用的代码:

cy.visit('https://www.unicef.fr/se-connecter/');
cy.get('#js-account-login-input-id').type("01223442342");

关于如何停止自动滚动的任何想法,或者我做错了什么?

最佳答案

本质上,你需要给type命令添加一个选项

cy.get('#js-account-login-input-id')
  .type("01223442342", {scrollBehavior: 'center'})

我看到有两件事阻止了对输入的访问

  • 带有模态背景的 cookie 弹出窗口首先覆盖输入对话框
  • .type() 命令将输入​​放置在屏幕顶部,但将其放置在隐藏的菜单下方

这是完整的测试,我添加了 cy.viewport() 只是为了让显示更好。

cy.viewport(1500,1000)
cy.visit('https://www.unicef.fr/se-connecter/')

cy.contains('button', "C'est OK pour moi").click()       // accept cookies

cy.get('#js-account-login-input-id')
  .type("01223442342", {scrollBehavior: 'center'})

请注意,如果 cookie 弹出窗口有时不出现(可能取决于您所在的地区),您需要有条件地对待它 - 即只有在 4 秒内出现才单击。

为此,添加 cypress-if package到项目。

然后在 cookie 按钮 click() 之前添加 .if() 命令。

cy.contains('button', "C'est OK pour moi")
  .if()                                        // does cookie button show?
  .click()                                     // accept cookies

关于scroll - Cypress 滚动获取一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74630698/

相关文章:

user-interface - 如何在 Visual Studio Code 中完全禁用输出滚动锁定?

authentication - Cypress 插入已验证的 token

angular - 为什么在使用 Cypress 时需要显式清除 sessionStorage?

jquery - 如何使用溢出滚动显示更多/显示更少?

javascript - 窗口大小调整后如何保持滚动位置?

java - 如何制作包含点集合的 JScrollPane?

cypress - 文本字段 cypress 中的金额计算

cypress - cy.request 不适用于 Cypress 插件文件?

css - 如何使用 Cypress 从 react 下拉列表中进行选择

html - 跨浏览器兼容的可滚动表