使用采集字段的采集内容类型设置:(针对该元素的)JavaScript代码返回值(需以return 开头)
使用javascript脚本内容如下:
return (function() {
// 假设XPath表达式已经给出承载#shadow-root(open)元素的父节点定位,例如:'//div[@id="TabContent_e19c965497fcdcc686df0ae5a39702c32"]',
const xpath = '//div[@id="TabContent_e19c965497fcdcc686df0ae5a39702c32"]';//这句需要修改定位内容,其他内容不用修改
// 使用 document.evaluate 方法执行XPath查询
const result = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
const shadowHost = result.singleNodeValue;
if (!shadowHost) {
console.error('未找到匹配的元素');
return '未找到匹配的元素';
}
// 检查是否可以直接访问 shadowRoot 属性
if (shadowHost.shadowRoot) {
// 如果可以访问,则返回其 innerHTML
return shadowHost.shadowRoot.innerHTML;
} else if (typeof shadowHost.getRootNode === 'function') {
// 使用 getRootNode 方法尝试获取 open 或 closed Shadow Root
const rootNode = shadowHost.getRootNode();
if (rootNode instanceof ShadowRoot) {
// 如果是 ShadowRoot 实例,返回其 innerHTML
return rootNode.innerHTML;
}
}
// 如果无法访问 Shadow DOM,返回错误信息
console.error('无法访问指定元素的 Shadow DOM');
return '无法访问指定元素的 Shadow DOM';
})();