我如何通过赛普拉斯获取 iframe 中的元素
How can i get element inside iframe by cypress
我是新手,正在测试 google 主页上的 GoogleApps 下拉菜单。我需要一个一个地获取这个菜单中的一个元素并断言它。所以我在 'commands.js':
中添加了新命令
Cypress.Commands.add('IframeServiceGet', (iframe) => {
return cy
.get(iframe)
.its('0.contentDocument.body')
.should('be.visible')
.then(cy.wrap)
})
现在我想获取像“地图”这样的元素
it('Click on "Maps', () => {
cy.IframeServiceGet('iframe').get('#yDmH0d > c-wiz > div > div > c-wiz > div > div > ul.LVal7b.u4RcUd > li:nth-child(3)').should('have.text', 'Maps').click()
cy.url().should('include', '/maps')
})
而且它没有获取元素“地图”。那我哪里不好了?
我尝试了一种不同的方法。
首先我安装了这个:npm install cypress-iframe
然后写了下面的代码(注意上面的 references
和 import
,我想你也可以在一个新文件中添加 jsconfig.json
如果您不希望在每一页上都导入这些引用,则在根文件夹中作为一个定时器)。
这对我有用。
/// <reference types="Cypress-xpath" />
/// <reference types = "Cypress-iframe"/>
import 'cypress-iframe'
describe('GoogleTest', () => {
it("Hits google", () =>{
cy.visit("https://www.google.com")
cy.get("a[aria-label='Google apps']").click()
cy.frameLoaded("iframe[role='presentation']")
cy.iframe().xpath("//span[text()='Maps']").click()
})
})
我是新手,正在测试 google 主页上的 GoogleApps 下拉菜单。我需要一个一个地获取这个菜单中的一个元素并断言它。所以我在 'commands.js':
中添加了新命令Cypress.Commands.add('IframeServiceGet', (iframe) => {
return cy
.get(iframe)
.its('0.contentDocument.body')
.should('be.visible')
.then(cy.wrap)
})
现在我想获取像“地图”这样的元素
it('Click on "Maps', () => {
cy.IframeServiceGet('iframe').get('#yDmH0d > c-wiz > div > div > c-wiz > div > div > ul.LVal7b.u4RcUd > li:nth-child(3)').should('have.text', 'Maps').click()
cy.url().should('include', '/maps')
})
而且它没有获取元素“地图”。那我哪里不好了?
我尝试了一种不同的方法。
首先我安装了这个:npm install cypress-iframe
然后写了下面的代码(注意上面的 references
和 import
,我想你也可以在一个新文件中添加 jsconfig.json
如果您不希望在每一页上都导入这些引用,则在根文件夹中作为一个定时器)。
这对我有用。
/// <reference types="Cypress-xpath" />
/// <reference types = "Cypress-iframe"/>
import 'cypress-iframe'
describe('GoogleTest', () => {
it("Hits google", () =>{
cy.visit("https://www.google.com")
cy.get("a[aria-label='Google apps']").click()
cy.frameLoaded("iframe[role='presentation']")
cy.iframe().xpath("//span[text()='Maps']").click()
})
})