Cypress 是现代化的前端自动化测试框架,它通过简单易用却又功能强大的 API,让前端工程师能够快速编写和运行自动化测试用例。其中,操作浏览器窗口是常见的需求,本文将介绍如何使用 Cypress 操作多个浏览器窗口。
打开新窗口
在 Cypress 中,可以使用 cy.visit()
命令打开一个新的浏览器窗口。例如:
cy.visit('http://example.com', { target: '_blank' })
其中,target: '_blank'
的参数告诉 Cypress 在新窗口中打开链接。
Cypress 还提供了 cy.window()
命令,可以获取到当前窗口的对象。所以,结合 cy.visit()
和 cy.window()
命令,可以在当前窗口中打开并获取新窗口的对象:
-- -------------------- ---- ------- ------------------------------ - ----------------- - ----------------------- ------------ ------------------------ - -- ------------------------ --------------------------------------------- ------------------------- -------------------- -- - -- ---------- ---------------------------- --
上述代码中,我们使用 cy.stub()
命令将 window.open()
函数存储为别名 windowOpen
,以便后续检查它是否被调用,并获取新打开窗口的对象。
切换窗口
Cypress 还提供了 cy.window()
和 cy.visit()
等命令,可以让我们在不同的窗口间切换:
-- -------------------- ---- ------- ------------------------------ - ----------------- - ------------ ------------------------ - -- ------------------------ --------------------------------------------- ------------------------- --------------------- -- - -- ---------- ----------------------------- -- ----------------------------- -- - -- ------ ------------------------------ -- ------ --- --------------------------------- -- ---------------------------------- -- - -- ------- ----------------- - -------------------- --
上述代码中,我们首先使用 cy.visit()
命令打开 example.com
首页,并在点击按钮后打开 new.example.com
网页。然后,我们使用 cy.window()
命令获取到新打开窗口的对象,并使用 Cypress.log()
命令在控制台输出当前窗口的 URL。最后,我们切换回原窗口,并修改它的 URL。
关闭窗口
最后,我们还可以通过 cy.window()
命令来关闭当前窗口:
cy.window().then(win => { win.close() })
注意,这里只能关闭当前窗口,如果需要关闭新打开的窗口,则需要先使用 cy.get('@newWindow')
命令获取到它的对象,然后调用 win.close()
。
总结
在 Cypress 自动化测试中操作多个浏览器窗口是常见需求之一,本文介绍了如何使用 cy.visit()
、cy.window()
等命令来打开、切换和关闭浏览器窗口。需要注意的是,Cypress 不支持跨多个窗口执行命令,因此每次操作都需要获取到对应的窗口对象。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649bc16748841e9894884041