1. 你不知道的Cypress系列(7) -- 當(dāng)iFrame遇見彈出框

        共 4583字,需瀏覽 10分鐘

         ·

        2021-04-14 16:11

        iTesting,愛測(cè)試,愛分享


        轉(zhuǎn)眼之間,你不知道的Cypress系列已經(jīng)到第7篇了。在Cypress中國(guó)群內(nèi)、在公眾號(hào)iTesting里,我每天都能看到大量關(guān)于Cypress的使用討論和私下問(wèn)詢。這讓我感到無(wú)比榮幸(買了書的同學(xué)們,公眾號(hào)回復(fù)你的微信號(hào),拉你到Cypress中國(guó)群)。

        今天是你不知道的Cypress系列(7) -- 當(dāng)iFrame遇見彈出框

        自從Cypress出現(xiàn)后,Cypress就在吊打一切Web端測(cè)試框架。雖然Cypress這么優(yōu)秀,但它也有一些妥協(xié)和倔強(qiáng),除了第6節(jié)的多Tab外,還包括這么一條:

        • iframes not supported

        這是多么的簡(jiǎn)單直接!于是,出現(xiàn)了這么一幕,很多同學(xué)悄咪咪的問(wèn)我:“蔡老師,Cypress不支持iframe啊,iframe都不支持,你怎么還敢推廣它?”

        一般這種情況我會(huì)說(shuō),不支持不代表不可以測(cè)試啊!只是使用Cypress測(cè)試iFrame不那么方便罷了。

        什么是iFrame

        iFrame是Inline Frame的縮寫。百度百科說(shuō)它的作用是文檔中的文檔,或者浮動(dòng)的框架(FRAME),iFrame元素會(huì)創(chuàng)建包含另外一個(gè)文檔的內(nèi)聯(lián)框架(即行內(nèi)框架)。

        我相信你看了這個(gè)定義會(huì)跟我跟我一樣丈二和尚摸不著頭腦,我們用人話重新說(shuō)一遍:

        iFrame是HTML元素的組件,iFrame元素允許你在你的網(wǎng)站中包含來(lái)自其他網(wǎng)站的內(nèi)容。例如,你在各種網(wǎng)站上看到的內(nèi)嵌的視頻,就是iFrame在起作用。

        它的用法也很簡(jiǎn)單:
        <iframe src="https://www.youu.com/embed/dXBohfjc4WA" width="680" height="480" allowfullscreen></iframe>

        使用iFrame的好處是它可以將你的用戶盡可能的保留在你自己的網(wǎng)站中。但是,過(guò)多的使用iFrame會(huì)出現(xiàn)安全性方面的問(wèn)題,并且如果iFrame內(nèi)容加載緩慢,也會(huì)影響到你頁(yè)面的加載速度。
        iFrame其實(shí)是個(gè)上古的前端技術(shù),當(dāng)前的Web應(yīng)用程序很少使用iFrame了(所以那位說(shuō)自己的應(yīng)用程序很多iFrame的同學(xué),你可以考慮換工作了 )。

        iFrame較多,不建議用Cypress

        原因如下:

        1. Cypress當(dāng)前沒有提供原生的命令來(lái)訪問(wèn)iFrame。

        2. iFrame的快照不會(huì)顯示在TestRunner里,導(dǎo)致使用Cypress調(diào)試包含iFrame的代碼非常不方便。

        彈出框

        彈出框也是自動(dòng)化測(cè)試,特別是We吧端自動(dòng)化測(cè)試的一個(gè)難道, 彈出框一般包括如下幾種:

        alert

        confirm

        prompt

        我出道題,特別簡(jiǎn)單

        好了,現(xiàn)在我有個(gè)需求,需要你測(cè)試下這個(gè)頁(yè)面:


        你點(diǎn)擊下“運(yùn)行代碼”,然后再點(diǎn)擊試一試,這個(gè)時(shí)候會(huì)出現(xiàn)一個(gè)警告框,你把警告框關(guān)掉。

        先不要看解決方案,你先自己寫下代碼看, 網(wǎng)址如下(在Cypress中國(guó)群某個(gè)群里說(shuō)過(guò)這個(gè)問(wèn)題,結(jié)果很酸爽):

        https://www.w3school.com.cn/tiy/t.asp?f=js_alert 

        Cypress操作iFrame和彈出框

        有的同學(xué)說(shuō)了,我用了Cypress后,再也不想用Selenium/Webdriver了。但是我的應(yīng)用程序包含Cypress,我該怎么辦?

        不廢話了,看Cypress如何處理這種情況:

            it('測(cè)試alert', () => {
                cy.visit('https://www.w3school.com.cn/tiy/t.asp?f=js_alert')
                cy.get('iframe').then(($iframe) => {
                const $body = $iframe.contents().find('body')
                cy.log('iTesting is good!',$body[1])
                const $win = $iframe[1].contentWindow
                cy.stub($win, 'alert').as('windowAlert')
                cy.wrap($body[1])
                    .contains('試一').click().should(function ({
                        expect(this.windowAlert).to.be.calledWith('我是一個(gè)警告框!')
                    })
                })
            })


        注意如下代碼:

            cy.get('iframe')
            cy.stub($win, 'alert').as('windowAlert')


        這兩個(gè)代碼是關(guān)鍵,建議好好查查,實(shí)在不行,群里問(wèn)問(wèn)。

        課后作業(yè)

        我知道你一定會(huì)問(wèn),所以我偷偷的給你準(zhǔn)備了一個(gè)簡(jiǎn)單的題目,超級(jí)簡(jiǎn)單哦:

        請(qǐng)?jiān)L問(wèn)如下頁(yè)面,然后試著測(cè)試下這里的超鏈接。我相信,你一定會(huì)回來(lái)找我的:)

        https://www.w3school.com.cn/tiy/t.asp?f=js_confirm

        https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_prompt



        Cypress有很多奇淫巧技, 我已經(jīng)總結(jié)超過(guò)百篇

        別走開,下一篇更精彩!


        往期回看:

                            你不知道的Cypress系列(1) --雞肋的BDD

                            你不知道的Cypress系列(2) -- ”該死"的PO模型!

                            你不知道的Cypress系列(3) -- 是時(shí)候重構(gòu)自己的思維了!

                            你不知道的Cypress系列(4) -- “PO”已死,App Action當(dāng)立?

                            你不知道的Cypress系列(5) -- "眼瞎"的TestRunner

                            你不知道的Cypress系列(6) -- 多Tab的小秘密

        為了更好的支持我創(chuàng)作,麻煩同學(xué)們動(dòng)動(dòng)小手,點(diǎn)贊 + 在看 + 轉(zhuǎn)發(fā)一鍵三聯(lián):)


        技術(shù)討論

        公眾號(hào)里直接回復(fù) 666, 帶你入圈


         -   -  時(shí)人莫小池中水, 淺處不妨有臥龍  -  -

        作者:

        Kevin Cai, 江湖人稱蔡老師。

        兩性情感專家,非著名測(cè)試開發(fā)。

        技術(shù)路線的堅(jiān)定支持者,始終相信Nobody can be somebody。      

        · 猜你喜歡的文章 ·


        功能測(cè)試進(jìn)階系列直播(免費(fèi))

        前端測(cè)試框架Cypress從入門到精通

        自研測(cè)試框架ktest介紹(適用于UI和API)

        測(cè)試開發(fā)入門與實(shí)戰(zhàn)

        瀏覽 120
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 女人卖婬全过片毛片免费观看 | 日韩AV黄片 | 尿进去了好烫灌尿高h大便 | 公交车上荫蒂添的好舒服口述电影 | 爱情电影aqdy三上悠亚 |