首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检索DOM元素的困难

检索DOM元素的困难
EN

Stack Overflow用户
提问于 2021-11-17 09:42:23
回答 1查看 72关注 0票数 0

我正试图从一个动态网站中读取一个元素,但我正面临一个奇怪的问题(至少对我的理解不足而言是如此)。

下面是来自Chrome开发工具的快照

我正在尝试读取高亮显示的行的innertText (请注意这是一个动态网站,因此"li id‘s“更改)。当我在document.querySelector("#\\31 60698c8-9d6c-492b-acf8-13b82467f873 > div > span.room-display-message-message")控制台中触发DevTools,同时高亮显示上面快照中的行时,会返回innerText,但是当我将所选内容移到树的更高的位置时,例如"iframe =“trollbox”,然后运行相同的脚本,它将返回"null“。

我是疯了还是这很正常,我应该采取另一种方法吗?

我之所以问这个问题,是因为我正在C#中开发一个工具,使用CEFSharp Chromium浏览器来读取该网站的内容,但这在目前来说并不重要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 14:57:35

好吧,我花了几天时间,但我终于得到了我想要的。对于那些感兴趣的人来说,我的解决方案是:

"--disable-web-security",

  • 首先要向浏览器元素添加CefSharp.WinForms.CefSettings

  • ,用于调用这个trollbox iframe,我在Javascript下面使用(我知道它可以简化,但是hey...it工作

函数foo(){“+ "var re = /^-a - document.getElementsByClassName('trollbox-container - Z!,‘?s/g;”+ "var messages = [];“+ "doc = script2’);”+ "ifrm = doc.getElementsByTagName('iframe');“+ "docInside = ifrm.contentDocument?docTag.getElementsByClassName('message-list');“:ifrm.contentDocument : ifrm.contentWindow.document;”+ "docTag = docInside.getElementsByClassName('content small');“+ "msgList =docTag+msgList_sender=msgList_sender+ "msgList_message = msgList.getElementsByClassName('room-display-message-message');”+ "for (var i= 0;i< msgList_sender.length;i++)“+”{“+”var发件人= msgList_senderi.innerText;“+”var message = msgList_messagei.innerText;“+”messages.push(发件人+ ':‘+ message);“+”}+返回消息;“+”}+ "foo();";

最后运行此代码

代码语言:javascript
运行
复制
JavascriptResponse response = await browser1.EvaluateScriptAsync(script2);

从我想要的特洛伊盒子中返回信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70002013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档