无法使用 Cypress 在影子主机中访问 pdf 查看器的元素

Posted

技术标签:

【中文标题】无法使用 Cypress 在影子主机中访问 pdf 查看器的元素【英文标题】:Unable to access elements of pdf viewer in a shadow host with Cypress 【发布时间】:2021-12-28 23:50:25 【问题描述】:

我正在尝试访问“original-url”的值。它似乎在“影子主机”中,但我尝试了所有我能想到的语法,但没有成功。代码下方附上一些截图,在此先感谢您的指导!

编辑:我认为这与页面的一部分是模式有关,或者赛普拉斯没有看到包含 pdf 的页面部分

//snippet of the cypress code
context('Test', includeShadowDom: true , () => 
    before(() => 
        cy.login();
    );

it('downloads the generated pdf form',  includeShadowDom: true , () => 
    
        cy.get('.viewer').shadow().find('original-url').then(($pdfDest) => 
            
            const pdfUrl = $pdfDest.text()

            cy.downloadFile(pdfUrl, '/genPdfs/', genPdf.pdf)

        )
    )

//页面上的元素使用inspect

<embed id="plugin" type="application/x-google-chrome-pdf" original-url="blob:https://somewebsite.com/fbe361d4-9393-e8bc728d8b9c#toolbar=0&amp;view=fitH" src="chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/2bf57493-fbe8-499f-9437-6d42267ac53d" background-color="4283586137" javascript="allow" top-level-url="https://somewebsite.com/__/#/tests/integration/specialized/Test.spec.js" pdf-viewer-update-enabled="">

检查页面:

柏树错误示例: 使用 # 相同的柏树错误

【问题讨论】:

【参考方案1】:

包含影子根的 pdf-viewer 元素有一个“查看者”ID,而不是一个类。

所以试试cy.get('#viewer').shadow()吧。

【讨论】:

感谢您的建议!我只是尝试过,它也没有找到。还有其他想法吗? 您现在遇到的错误是什么?如果错误是找不到元素“orginal-url”,那么您再次遇到同样的问题,您使用了不正确的选择器。我建议熟悉选择器的工作原理:docs.cypress.io/api/commands/get#Selector 您可能需要.find('[orginal-url]') 之类的内容,但如果您分享确切的错误信息会更好,这样我们就不必猜测了。

以上是关于无法使用 Cypress 在影子主机中访问 pdf 查看器的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cypress 中访问 baseURL 的值

php codeigniter无法访问托管中的文件pdf

访问新窗口 - cypress.io

使用 Keycloak 的 Cypress UI 自动登录失败

iot:Certificate.Subject.SerialNumber 用于限制影子访问

在 Cypress 中优化选择器