Estoy tratando de leer un elemento de un sitio web dinámico, pero me enfrento a un problema extraño (al menos para mi pobre comprensión).
A continuación se muestra una instantánea de la herramienta para desarrolladores de Chrome 
Estoy tratando de leer el texto interno de la línea resaltada (tenga en cuenta que este es un sitio web dinámico, por lo que el "li id" cambia). Cuando estoy document.querySelector("#\\31 60698c8-9d6c-492b-acf8-13b82467f873 > div > span.room-display-message-message") en la consola DevTools mientras resalto la línea como en la instantánea anterior se devuelve el texto interno, pero cuando muevo mi selección más arriba en el árbol, por ejemplo, a "iframe class = "trollbox-iframe" y luego ejecuto el mismo script, devuelve "nulo". Este comportamiento también aparece al hacer el script más aleatorio como document.querySelector("* > div > span.room-display-message-message")
¿Me estoy volviendo loco o esto es normal y debería tomar otro enfoque?
Pregunto esto porque estoy desarrollando una herramienta en C# usando un navegador web CEFSharp Chromium para leer el contenido de este sitio web, pero eso no es relevante en este momento.
OK, me tomó unos días, pero finalmente obtuve lo que quería. Para aquellos interesados aquí está mi solución:
Lo primero es agregar un CefSharp.WinForms.CefSettings al elemento de su navegador, siendo "--disable-web-security"
Para llamar a este iframe de trollbox que estoy usando debajo de Javascript (sé que se puede simplificar, pero bueno... funciona)
var script2 = "función foo(){" + "var re = /[^-a - zA - Z!, '?\s]/g;" + "var mensajes = [];" + "doc = document.getElementsByClassName('trollbox-container open')[0];" + "ifrm = doc.getElementsByTagName('iframe')[0];" + "docInside = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;" + "docTag = docInside.getElementsByClassName('contenido pequeño')[0];" + "msgList = docTag.getElementsByClassName('mensaje-lista')[0];" + "msgList_sender = msgList.getElementsByClassName('room-display-message-sender');" + "msgList_message = msgList.getElementsByClassName('room-display-message-message');" + "for (var i = 0; i < msgList_sender.length; i++)" + " {" + " var sender = msgList_sender[i].innerText;" + " var mensaje = msgList_message[i].innerText;" + " mensajes.push(remitente + ': ' + mensaje);" + " }" + "mensajes de vuelta;" + "}" + "foo();";
Finalmente ejecutando este código
JavascriptResponse response = await browser1.EvaluateScriptAsync(script2);me devuelve la informacion del trollbox que queria