【发布时间】:2022-01-08 23:08:11
【问题描述】:
使用下面的代码(用于小书签),我试图打开一个新窗口,查找某些跨度元素,然后单击它们中的每一个。但是,我无法通过 XPath 访问新窗口的代码。
- 直接在新标签中插入
clickElem function的代码(复制和粘贴)效果很好 - CORS 不是问题,因为它是相同的域/子域/协议
- 我也一直关注this answer。
JavaScript:
const w = window.open('https://example.com', 'Example', 'width=500, height=500');
w.clickElem = () => {
const xpath = '//span[text()="Click here"]';
const selectedNodeElements = w.document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null);
let currentNode = selectedNodeElements.iterateNext();
while (currentNode) {
currentNode.click();
currentNode = selectedNodeElements.iterateNext();
}
}
setTimeout(w.clickElem, 8000);
当我尝试通过currentNode.textContent 访问文本时,我收到以下错误:
"Error in protected function: Cannot read properties of null (reading 'textContent')"
感谢每一个提示!
【问题讨论】:
-
如果您使用不同的协议(例如 https 而不是 http)或不同的子域(例如 www),Cors 将成为问题。端口也必须相同。
-
在我的例子中,它是同一个域、子域和协议
-
只要在window文档上使用查询选择器然后看看你是否可以访问dom。
-
这很好,我可以通过查询选择器访问新打开的窗口中的元素
标签: javascript xpath