Cypress Scrolling获取元素



我目前正在发现自动化工具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");

你知道我该如何停止自动滚动吗?或者我做错了什么?

本质上,您需要向类型命令添加一个选项

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秒内出现时才点击。

为此,请将cyprus if包添加到项目中。

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

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

我打开了网站,但密码字段与您的id选择器不匹配。我在里面发现了js-account-login-input-password

您可以通过其他方式选择密码框,以避免使用id。

cy.get('input[type=password]')

最新更新