簡體   English   中英

如何在新開的 window 中使用 XPath?

[英]How to use XPath in a newly opened window?

使用下面的代碼(用於書簽),我試圖打開一個新的 window,查找某些跨度元素,然后單擊它們中的每一個。 但是,我無法通過 XPath 訪問新的 window 的代碼。

  • 直接在新選項卡中插入clickElem function的代碼(復制和粘貼)工作正常
  • CORS 不是問題,因為它是相同的域/子域/協議
  • 我也一直在關注這個答案

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')"

感謝每一個提示!

你確定你已經在你的標簽里了嗎? 我正在考慮一些你需要獲得像這樣的活動標簽的東西?

在不斷地瀏覽我的代碼並遇到這個答案后,我終於發現了自己的錯誤。 .iterateNext()不起作用,因為上下文節點被錯誤地設置為document 相反,應該是w.document來引用新打開的 window。

const selectedNodeElements = w.document.evaluate(xpath, w.document, null, XPathResult.ANY_TYPE, null);
    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM