相关疑难解决方法(0)

使用Chrome扩展程序覆盖Element.prototype.attachShadow

我需要访问具有关闭的Shadow DOM的Web组件的DOM,以进行某些Selenium测试。我读过一些参考资料,您可以Element.prototype.attachShadow在文档启动时重写这些参考资料,以将“阴影”从“关闭”更改为“打开”。为此,我创建了一个Chrome扩展程序。以下是我的manifest.json

{
    "name": "SeleniumTesting",
    "description": "Extension to open closed Shadow DOM for selenium testing",
    "version": "1",
    "author": "SeleniumTesting",
    "manifest_version": 2,
    "permissions": ["downloads", "<all_urls>"],
    "content_scripts": [{
        "matches": ["http://localhost:5000/*"],
        "run_at": "document_start",
        "all_frames": true,
        "js": ["shadowInject.js"]
    }]
}
Run Code Online (Sandbox Code Playgroud)

还有我的shadowInject.js

console.log('test');
Element.prototype._attachShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function () {
    console.log('attachShadow');
    return this._attachShadow( { mode: "open" } );
};
Run Code Online (Sandbox Code Playgroud)

为了对其进行测试,我在ASPNetCore MVC项目中创建了我的组件。以下是我的JavaScript,用于创建自定义组件:

customElements.define('x-element', class extends HTMLElement {
    constructor() {
        super(); 
        this._shadowRoot = this.attachShadow({
            mode: 'closed'
        });
        this._shadowRoot.innerHTML = `<div class="wrapper"> …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension shadow-dom

3
推荐指数
1
解决办法
189
查看次数