cypress中豐富的調(diào)試工具使用方法
cypress調(diào)試工具
Cypress附帶了一系列調(diào)試工具來(lái)幫助我們弄明白測(cè)試的經(jīng)過,利于我們更好的調(diào)試。
具體這些工具的能力都有啥?
- 回到每個(gè)命令的快照。
- 可以看到特殊的已發(fā)生的
page events
。 - 接收關(guān)于每個(gè)命令的額外輸出。
- 在多個(gè)命令快照之間 向前/向后 步進(jìn)。
- 暫停命令并迭代地逐步執(zhí)行。
- 當(dāng)找到隱藏的或者多個(gè)元素時(shí),展示的更形象。
這里繼續(xù)使用上一章的測(cè)試代碼,來(lái)看下其中的一些具體操作。
describe('My First Test', () => { it('Gets, types and asserts', () => { cy.visit('https://example.cypress.io') cy.contains('type').click() // Should be on a new URL which includes '/commands/actions' cy.url().should('include', '/commands/actions') // Get an input, type into it and verify that the value has been updated cy.get('.action-email') .type('fake@email.com') .should('have.value', 'fake@email.com') }) })
一、 Time travel
姑且叫它時(shí)間穿梭吧。期初我還有點(diǎn)莫名其妙,后來(lái)用了才知道,確實(shí)好用。就是當(dāng)你的鼠標(biāo)在左側(cè)的命令日志上懸停時(shí),cypress會(huì)自動(dòng)回到那個(gè)命令解析時(shí)的快照,于是乎,在右側(cè)的預(yù)覽窗口,就可以看到對(duì)應(yīng)這個(gè)命令進(jìn)行的動(dòng)作。
二、 快照
在左側(cè)的命令行也是可以交互的,這里就可以點(diǎn)擊click
命令,點(diǎn)擊后就發(fā)現(xiàn)變紫色了,說明事情有古怪。
其實(shí)這里有3點(diǎn)需要大家關(guān)注到(對(duì)應(yīng)圖里的1,2,3標(biāo)記):
- 固定快照
可以看到有個(gè)圖釘標(biāo)記,表示現(xiàn)在鎖定了這個(gè)快照。這時(shí)候鼠標(biāo)移動(dòng)到其他命令上,快照也不會(huì)切換。
這就方便我們?cè)趧?chuàng)建快照時(shí),手動(dòng)檢查被測(cè)試應(yīng)用程序的DOM。
- 點(diǎn)擊事件
由于.click()是一個(gè)操作命令,那么在事件發(fā)生的坐標(biāo)處就可以看到一個(gè)紅色的命中框。
- 快照菜單面板
這是一個(gè)新的菜單面板。一些命令(如操作命令)如果使用多個(gè)快照,那么可以通過點(diǎn)擊:before
和after
,來(lái)回的切換快照。before
快照是在觸發(fā)click
事件之前進(jìn)行的,after
快照則是在點(diǎn)擊事件發(fā)生后立即執(zhí)行的。
比如現(xiàn)在點(diǎn)擊type
命令,單擊before將以輸入框之前的樣子,應(yīng)該顯示占位符文本信息。單擊after將顯示TYPE命令完成后輸入的樣子,顯示fake@email.com
。
三、errors信息
調(diào)試代碼,自然少不了看報(bào)錯(cuò)的error信息了。
在cypress中,如果發(fā)生了錯(cuò)誤,會(huì)打印如下的信息(對(duì)應(yīng)圖里標(biāo)記的序號(hào)閱讀):
- Error name:這是錯(cuò)誤的類型,比如AssertionError, CypressError。
- Error message:通常會(huì)告訴我們哪里出了問題。它的長(zhǎng)度不一,有些很短,而有些很長(zhǎng),可能會(huì)告訴我們應(yīng)該如何準(zhǔn)確地修正錯(cuò)誤。
- Learn more:一些錯(cuò)誤消息包含一個(gè)Learn more的鏈接,點(diǎn)擊后跳轉(zhuǎn)到相關(guān)的Cypress文檔。
- Code frame file:通常是堆棧跟蹤的頂部一行,顯示了在下面的代碼框架中突出顯示的文件、行和列。
- Code frame:顯示發(fā)生故障的代碼片段,并突出顯示了相關(guān)的行和列。
- View stack trace:?jiǎn)螕舸税粹o可切換是否展示堆棧跟蹤。
- Print to console button:?jiǎn)螕舸税粹o將完整的錯(cuò)誤打印到DevTools控制臺(tái),也就是F12的console。
四、頁(yè)面事件
命令日志里還有2個(gè)看起來(lái)很有趣的日志:PAGE LOAD
、NEW URL
。這些不需要我們?nèi)ゼ樱?dāng)發(fā)生一些重要事件的時(shí)候,
cypress自己就會(huì)輸出這些日志。
具體涉及到自動(dòng)輸出日志的事件有如下:
- 發(fā)送了XHR的請(qǐng)求。
- url改變。
- 頁(yè)面加載
- 表單提交。
五、控制臺(tái)的輸出
cypress還可以將額外的調(diào)試信息輸出到控制臺(tái)。
比如F12打開你的Dev Tools并點(diǎn)擊get
來(lái)獲取.action-email
類選擇器。
我們可以在控制臺(tái)中看到Cypress輸出額外的信息:
- Command: 已發(fā)出的命令。
- Yielded: 這個(gè)命令返回的內(nèi)容。
- Elements: 發(fā)現(xiàn)的元素?cái)?shù)量。
- Selector:使用的選擇器。
六、調(diào)試專用命令
除了UI界面上的各種輔助工具之外,還有專門用于調(diào)試的命令,例如:
- cy.pause()
- cy.debug()
現(xiàn)在,在代碼里加上一行cy.pause()
,保存。
describe('My First Test', () => { it('clicking "type" shows the right headings', () => { cy.visit('https://example.cypress.io') cy.pause() cy.contains('type').click() // Should be on a new URL which includes '/commands/actions' cy.url().should('include', '/commands/actions') // Get an input, type into it and verify that the value has been updated cy.get('.action-email') .type('fake@email.com') .should('have.value', 'fake@email.com') }) })
可以看到程序運(yùn)行到cy.pause()
就會(huì)暫停,可以手動(dòng)點(diǎn)擊繼續(xù),進(jìn)行下一步操作。
以上就是cypress中豐富的調(diào)試工具使用方法的詳細(xì)內(nèi)容,更多關(guān)于cypress調(diào)試工具的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
bootstrap datepicker插件默認(rèn)英文修改為中文
這篇文章主要為大家詳細(xì)介紹了bootstrap datepicker插件默認(rèn)英文修改為中文的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07JavaScript關(guān)聯(lián)數(shù)組用法分析【概念、定義、遍歷】
這篇文章主要介紹了JavaScript關(guān)聯(lián)數(shù)組用法,結(jié)合實(shí)例形式分析了關(guān)聯(lián)數(shù)組的概念、定義與遍歷操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03原生js實(shí)現(xiàn)淘寶首頁(yè)點(diǎn)擊按鈕緩慢回到頂部效果
本例將實(shí)現(xiàn)這樣的一個(gè)效果:下拉到一定距離后按鈕才顯示出來(lái),鼠標(biāo)放到按鈕上時(shí),按鈕背景會(huì)變成灰色,并且圖標(biāo)變成了文字。點(diǎn)擊按鈕緩慢回到頂部2014-04-04JavaScript數(shù)學(xué)對(duì)象Math操作數(shù)字的方法
這篇文章主要為大家介紹了JavaScript數(shù)學(xué)對(duì)象Math操作數(shù)字的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05js實(shí)現(xiàn)checkbox全選、不選與反選的方法
這篇文章主要介紹了js實(shí)現(xiàn)checkbox全選、不選與反選的方法,以實(shí)例形式詳細(xì)分析了實(shí)現(xiàn)的思路及對(duì)應(yīng)的html與js代碼的實(shí)現(xiàn)過程,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02前端實(shí)現(xiàn)電子簽名(web、移動(dòng)端)通用的實(shí)戰(zhàn)過程
電子簽名通俗來(lái)說就是通過技術(shù)手段實(shí)現(xiàn)在電子文檔上加載電子形式的簽名,下面這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)電子簽名(web、移動(dòng)端)通用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12JS去掉字符串末尾的標(biāo)點(diǎn)符號(hào)及刪除最后一個(gè)字符的方法
這篇文章主要介紹了JS去掉字符串末尾的標(biāo)點(diǎn)符號(hào)及刪除最后一個(gè)字符的方法,需要的朋友可以參考下2017-10-10