向指定的DOM元素中键入内容。
例:
cy.get('input').type('Hello, World')
.type(text)
.type(text, options)
序列 | 注释 |
---|---|
{{} | { 键 |
{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} |
序列 | 默认值 | 注释 |
---|---|---|
log | true | 在命令日志中显示该命令 |
delay | 10 | 每次按键后延迟10毫秒,模拟用户打字效果 |
force | false | 控制在禁止录入的栏位上录入内容 |
release | true | |
timeout | defaultCommandTimeout |
例:
//将每次按键后的延迟改为100ms
cy.get('input').type('Hello, World',{ delay: 100 })
例:
cy.get('input').type('Hello, World') .should('have.value', 'Hello, World')
<input type="date">
<input type="month">
<input type="week">
<input type="time">
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>
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')
})
})
例一:
cy.get('input').type('{shift}Q')
例二:
cy.get('input').type('{ctrl}test').type('everything')
例三:
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
例四:
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
})
例一:
cy.get('body').type('{alt}a'}
例二:
//不会在.type()后被释放
cy.get('body').type('{shift}', { release: false }).get('li:first').click()
强制操作,而不考虑其栏位是否可操作。
例一:
下图第一个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})
})
})
定义tabindex属性的元素。
定义contenteditable属性的元素。
定义了以下类型属性之一的
♠ text
♠ password
♠ email
♠ number
♠ date
♠ week
♠ month
♠ time
♠ datetime
♠ datetime-local
♠ search
♠ url
♠ tel
如果元素当前不在焦点上,Cypress会首先向该元素发出.click()以使其成为焦点。click()上记录的所有正常事件都会触发。
一旦元素获得焦点,Cypress将触发键盘事件,以下事件将根据按下与事件规格相同的键触发:
♠ keydown
♠ keypress
♠ textInput
♠ input
♠ keyup
beforeinput不会被触发,即使它在规范中,因为没有浏览器采用它。
更改事件将在按下{enter}键时触发,或者在元素失去焦点时触发。这与浏览器行为相匹配。
如果之前的被取消了,Cypress将不会触发后续事件