如何使用赛普拉斯获取元素type =“ email”?

时间:2018-10-11 11:04:38

标签: cypress

我目前正在尝试学习赛普拉斯的自动化测试。

我要查找并单击此元素:

<input type="email" class="form-control text-ellipsis-global GKMU5SYDM3B" id="gwt-uid-1419" data-empty="true">

我不能使用ID或“ GKMU5SYDM3B”,因为它们都是由GWT随机生成的。

我希望我的命令类似于此:

cy.get('input').type('email').click().type('fake@email.com')
  .should('have.value', 'fake@email.com')

我尝试了此操作,并收到以下错误消息:

CypressError: cy.type() can only be called on a single element. Your subject contained 4 elements.

2 个答案:

答案 0 :(得分:3)

这应该有效。

 cy.get("[type='email']")

 cy.get("[type='email']").type('myemail@domain.com')

我经常做的事情是,先在浏览器控制台的JQUERY中尝试一下。您不必单击它即可键入它。

如果周围有一些父元素,例如div,则可能还希望包含它。

<div id='parent'>
    <input type="email" class="form-control text-ellipsis-global GKMU5SYDM3B" id="gwt-uid-1419" data-empty="true">
</div>

所以你会去

cy.get('#parent').find("[type='email']").type('myemail@domain.com')

答案 1 :(得分:-1)

实际上您想验证电子邮件字段中输入的“电子邮件”。

首先,使用这种定位器输入“email”。

cy.get("[type='email']").type('fake@email.com');

在“电子邮件”字段中输入后,您可以通过此断言进行验证。

cy.get("[type='email']").should('have.value', 'fake@email.com')