Cypress 如何获取元素类型=";电邮;使用柏树?

Cypress 如何获取元素类型=";电邮;使用柏树?,cypress,Cypress,我目前正在尝试学习Cypress进行自动化测试 我要查找并单击此元素: <input type="email" class="form-control text-ellipsis-global GKMU5SYDM3B" id="gwt-uid-1419" data-empty="true"> 我尝试了这一次,并收到以下错误消息: CypressError: cy.type() can only be called on a single element. Your subject

我目前正在尝试学习Cypress进行自动化测试

我要查找并单击此元素:

<input type="email" class="form-control text-ellipsis-global GKMU5SYDM3B" id="gwt-uid-1419" data-empty="true">
我尝试了这一次,并收到以下错误消息:

CypressError: cy.type() can only be called on a single element. Your subject contained 4 elements.
这应该行得通

 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("[type='email']").type('fake@email.com');
在输入“email”字段后,您可以通过此断言进行验证

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

我在下面写下了答案。但我有一些问题。为什么你要测试你可以在输入框中输入?也许您有一个很好的理由,但您没有编写该实现。你也可以使用代码吗?如果是这样,您可能希望在其中添加您自己的日期测试id属性以使其唯一,如果其他人添加另一个电子邮件类型的输入(例如验证电子邮件),这将导致一些问题。您的页面上是否有其他具有电子邮件类型的输入?是否存在具有id或类的父元素(如div或form)?如果是这样,你可以选择父对象,然后找到子对象,使其更独特。@Maccurt我已经评估了许多自动化测试方法,包括Selenium、Nightwatch和Cypress。在每种情况下,我都编写一个简单的测试来登录和退出我们的Web客户端系统。我不负责任何代码,只是测试,所以我必须适应那里的任何东西。啊,是的,我知道这个角色。我们使用Telerik(我正试图减少)。我也用过量角器。。根据我使用很多工具的经验,我发现Cypress是目前为止我最喜欢的工具。量角器可能是下一个。我的目标是让我的开发人员加入到这项工作中来,他们将使用Cypress。祝你好运。如果不能在Internet Explorer中工作,您会感到有些悲伤,但我认为这些都是边缘案例。对我来说,Cypress使测试变得容易,模拟API调用的能力改变了游戏规则。祝你好运!我担心的是,页面上还有其他类型的电子邮件输入。如果是这样的话,向我们展示更多的html结构,比如父元素,我们可以使它更独特。我必须单击以键入元素,因为GWT使用这些占位符。让生活变得困难。甚至不能在Firefox中使用Inspect,因为单击占位符会将其更改为其他元素。
cy.get("[type='email']").type('fake@email.com');
cy.get("[type='email']").should('have.value', 'fake@email.com')