Cypress自动化测试:type


1、作用

向指定的DOM元素中键入内容。

例:

cy.get('input').type('Hello, World')

2、语法格式

.type(text)
.type(text, options)

3、参数

3.1、text

  • 录入到DOM元素中的内容。
  • 可以包含以下特殊字符:
序列注释
{{}{ 键
{backspace}功能同backspace键
{del}功能同delete键
{downarrow}向下移动光标
{end}将光标移到行尾
{enter}回车键
{esc}Esc键
{home}将光标移到行首
{insert}将字符插入光标的右侧
{leftarrow}将光标向左移动
{pagedown}向下滚动
{pageup}向上滚动
{rightarrow}将光标向右移动
{selectall}选择所有文本
{uparrow}将光标向上移动
  • 还以包含以下特殊字符:

  鼠标事件主要是使用鼠标来触发的,但在按下鼠标键盘上的某些键的状态也可以影响到所要采取的操作。这些操作键就是Shift、Ctrl、Alt和Meta(在Windows键盘中是Windows键,在苹果机中是Cmd键),它们将常被用来修改鼠标事件的行为。
  DOM为此规定了4个属性,表示这些修改的状态:shiftKey、ctrlKey、altKey和metaKey。这些属性中包含的都是布尔值,如果相应的键被按下了,则值为true,否则为false。

序列注释
{alt}、{option}
{ctrl}、{control}
{meta}、{command}、 {cmd}在Windows键盘中是Windows键,在苹果机中是Cmd键
{shift}

3.2、options

序列默认值注释
logtrue在命令日志中显示该命令
delay10每次按键后延迟10毫秒,模拟用户打字效果
forcefalse控制在禁止录入的栏位上录入内容
releasetrue
timeoutdefaultCommandTimeout

例:

//将每次按键后的延迟改为100ms
cy.get('input').type('Hello, World'{ delay: 100 })

4、断言

例:

cy.get('input').type('Hello, World') .should('have.value', 'Hello, World')

5、日期时间录入

  • 在日期、月份、星期、时间输入上使用.type() 需要在以下格式中指定一个有效的日期:。
  • 不同的浏览器对上述几种input的支持不同,格式也因地区而异。只有W3规范所要求的格式,无论输入的值是什么,都不受浏览器或地区的限制。
  • 不允许使用特殊字符({left tarrow}、{selectall}等)

5.1、日期录入

  • yyyy-MM-dd ,例,2019-07-28
<input type="date">

5.2、月份录入

  • 格式:yyyy-MM,例,2019-07
<input type="month">

5.3、星期录入

  • 格式:yyyy-Www, 例,2019-W09
  • 其中W是文字字符“W”,ww是周数(01-53)。
<input type="week">

5.4、时间录入

  • 格式:HH:mm (例, 01:30 或 23:15)
  • 格式:HH:mm:ss (例,10:00:30)
  • 格式:HH:mm:ss.SSS (例,12:00:00.384)
  • HH为00-23,mm为00-59,ss为00-59,SSS为000-999。
<input type="time">

5.5 、演示

html如下:

<html>
	<head>
		<title>Cypress测试专用</title>
		<meta charset="UTF-8">
	</head>
	<body>
		
			日期录入:<input type="date"></p>
	
			月份录入:<input type="month"></p>

			星期录入:<input type="week"></p>

			时间录入:<input type="time1"></p>

			时间录入:<input type="time2"></p>

			时间录入:<input type="time3"></p>
		
		
	</body>
</html>

面面显示如下:
在这里插入图片描述
Cypress脚本如下:

context('Actions', () => {	

  beforeEach(() => {
    cy.visit('http://127.0.0.1/type.html')
  })
  
  it('日期录入', () => {
		cy.get('[type="date"]').type('2019-07-28')
		cy.get('[type="month"]').type('2019-07')
		cy.get('[type="week"]').type('2019-W07')
		cy.get('[type="time1"]').type('09:09')
		cy.get('[type="time2"]').type('10:00:59')
		cy.get('[type="time3"]').type('10:00:59.999')

  })
    
  
})  

运行效果如下:
在这里插入图片描述

6、组合键

  •   测试后发现,以下命令并不会录入小写q而是录入大写Q。
      感觉这些特殊的按键只和shiftKey、ctrlKey、altKey和metaKey事件相关。

例一:

cy.get('input').type('{shift}Q')
  • 默认情况下,每个类型命令之后都会释放修饰符。
    按住ctrl后的所有字符即test,都有ctrlKey,但everything的ctrlKey为false

例二:

cy.get('input').type('{ctrl}test').type('everything')
  • { release: false }可以使修饰符一直保持

例三:

cy.get('input').type('{alt}foo', { release: false })		//相当于alt键被按下,此时altKey事件属性为真
cy.get('button').click()	//受{ release: false }影响,altKey仍然为true
cy.get('input').type('{alt}')//相当于弹起alt,此后的altKey被设为fasle
  • 修改器在案例之后自动释放,即使使用{release: false}也是如此。

例四:

it('has modifiers activated', function () {
  
  cy.get('input').type('{alt}foo', { release: false })
})//案例执行结束,altKey被释放,不会带到下一条案列中


it('does not have modifiers activated', function () {
  cy.get('input').type('bar')//altKey=false
})

7、全局快捷键

  • 在body上使用快捷键
    所有类型的事件都在body上触发

例一:

cy.get('body').type('{alt}a'}

例二:

//不会在.type()后被释放
cy.get('body').type('{shift}', { release: false }).get('li:first').click()

8、force

强制操作,而不考虑其栏位是否可操作。
例一:
下图第一个input栏位禁止操作

在这里插入图片描述
Cypress脚本

context('Type测试', () => {	

  beforeEach(() => {
    cy.visit('http://127.0.0.1/type.html')
  })
  
  it('force', () => {
		cy.get('body>:nth-child(1)').type('强制录入',{force:true})


  })
    
  
}) 

执行效果:
在这里插入图片描述

9、支持的元素

  • <body>和<textarea>元素

  • 定义tabindex属性的元素。

  • 定义contenteditable属性的元素。

  • 定义了以下类型属性之一的<input>

     ♠  text
     ♠ password
     ♠ email
     ♠ number
     ♠ date
     ♠ week
     ♠ month
     ♠ time
     ♠ datetime
     ♠ datetime-local
     ♠ search
     ♠ url
     ♠ tel

10、事件

  • 如果元素当前不在焦点上,Cypress会首先向该元素发出.click()以使其成为焦点。click()上记录的所有正常事件都会触发。

  • 一旦元素获得焦点,Cypress将触发键盘事件,以下事件将根据按下与事件规格相同的键触发:
     ♠ keydown
     ♠ keypress
     ♠ textInput
     ♠ input
     ♠ keyup

  • beforeinput不会被触发,即使它在规范中,因为没有浏览器采用它。

  • 更改事件将在按下{enter}键时触发,或者在元素失去焦点时触发。这与浏览器行为相匹配。

  • 如果之前的被取消了,Cypress将不会触发后续事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值