Estoy tratando de crear un bot de Python Selenium para comentar en varias publicaciones de TikTok. Ahora, el problema es que cuando intentas comentar la publicación, no te permite insertar texto porque el cuadro de comentarios no es un elemento de input sino un elemento DIV . Soy consciente de que puede editar el valor de span que está dentro del DIV con javascript, pero si interactúa con él mediante código, no me permitirá dejar menciones ni etiquetar personas. Todo esto se discutió aquí , pero no recibí ningún comentario de nadie y esta es una pregunta separada, por eso hice una segunda publicación.
Así que después de pensar un poco, creo que encontré una solución. Entonces, originalmente estaba usando pyautogui para escribir el texto que necesitaba para poder mencionar a las personas. Así que pensé "¿qué pasa si hago que esto funcione pero con javascript porque puedes llamar a las funciones de javascript con selenio". Así que me preguntaba cómo podría hacer que el tipo de JavaScript en una página web.
Probé document.write('') pero el problema con esto es que simplemente borra toda la página y solo muestra el valor proporcionado
Intenté investigar mi pregunta pero no pude encontrar nada.
Mi objetivo es simplemente poder escribir texto con java script, no quiero actualizar un valor que quiero simular pulsaciones de teclas.
Siguiendo el comentario de Dermo909 , aquí hay un código js para eventos activos y establecer el enfoque (que simulará un efecto de escritura real en el navegador).
Editar: JavaScript es la mejor manera de interactuar con el navegador. No estoy más familiarizado con una solución de Python para desencadenar eventos en la web. Este código hará que el código js funcione en el entorno de python selenium ( leer más ):
from selenium import webdriver driver = webdriver.Firefox(executable_path="C:\\geckodriver.exe") // Choose the desired span, and add your text into it driver.execute_script("document.quarySelectorAll('span[data-offset-key]')[0].innerHTML = '@userName' "); // try setting focus on the span to active the popup list driver.execute_script("document.quarySelectorAll('span[data-offset-key=\"eap17-0-0\"]')[0].focus()") // try setting a change event on the span to active the popup list driver.execute_script("document.quarySelectorAll('[data-offset-key=\"eap17-0-0\"]')[0].dispatchEvent(new Event('change', { 'bubbles': true }))") // try typing with keyBoard events (make sure to select the span first): driver.execute_script("document.quarySelectorAll('span[data-offset-key=\"eap17-0-0\"]')[0].focus()") driver.execute_script("document.quarySelectorAll('span[data-offset-key]')[0].innerHTML= '@'"); driver.execute_script("document.dispatchEvent(new KeyboardEvent('keypress', {'key': 'u'}))");Vamos a desglosarlo:
mySpan = document.quarySelectorAll('span')[0] // quarySelectorAll returns a list of elements from your webpage according to the the description in the (...) // then chooses the first (and hopfully the only one) using [0]. mySpan.innerHTML = '@userName' mySpan.focus() mySpan.dispatchEvent(new Event('change', { 'bubbles': true }))