Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

79
Views
Dificultades con la recuperación de elementos DOM

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 ingrese la descripción de la imagen aquí

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.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

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

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!