Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
¿Cómo activar la acción de desplazamiento usando javascript?

Quiero simular el desplazamiento del mouse en este sitio en este elemento usando solo javascript con selenio.

 #main > div > div > div.Blockreact__Block-sc-1xf18x6-0.elqhCm > div > div.fresnel-container.fresnel-greaterThanOrEqual-xl.fill-remaining-height > div > div.Blockreact__Block-sc-1xf18x6-0.Flexreact__Flex-sc-1twd32i-0.FlexColumnreact__FlexColumn-sc-1wwz3hp-0.bEcedX.jYqxGr.ksFzlZ > div.Blockreact__Block-sc-1xf18x6-0.duVYOV > div > div.PriceHistory--graph > div > div > div.recharts-wrapper > svg > g.recharts-layer.recharts-bar > g > g:nth-child(80)

He mirado varias publicaciones como esta y esta. Sin embargo, nada parece estar funcionando en este sitio.

Intenté usar este código, pero no funciona en el sitio.

 const mouseoverEvent = new Event('mouseover'); $('#main > div > div > div.Blockreact__Block-sc-1xf18x6-0.elqhCm > div > div.fresnel-container.fresnel-greaterThanOrEqual-xl.fill-remaining-height > div > div.Blockreact__Block-sc-1xf18x6-0.Flexreact__Flex-sc-1twd32i-0.FlexColumnreact__FlexColumn-sc-1wwz3hp-0.bEcedX.jYqxGr.ksFzlZ > div.Blockreact__Block-sc-1xf18x6-0.duVYOV > div > div.PriceHistory--graph > div > div > div.recharts-wrapper > svg > g.recharts-layer.recharts-bar > g > g:nth-child(80)').dispatchEvent(mouseoverEvent)

Debido a algunos problemas, solo puedo usar javascript y no cadenas de acción como describen la mayoría de las publicaciones. Cualquier solución sin ActionChains debería funcionar bien.

Solo quiero obtener los datos que se muestran después de que se activa el evento de desplazamiento del mouse. Se puede hacer manualmente y con ActionChains pero quiero que se haga con JS. Enlace a la captura de pantalla Como se puede ver en la imagen, aparece una información sobre herramientas después de que el mouse se desplaza sobre el gráfico. Puedo simular el comportamiento con ActionChains usando este código.

 #Scroll a little bit to load all the elements driver.execute_script("window.scrollTo(0, 500);") XPath = "//*[@class='recharts-layer recharts-bar-rectangle']" bar = driver.find_elements('xpath',XPath)[-1] #Since I want to get the latest data ActionChains(driver).move_to_element(bar).perform() #Now get the data XPATH_TOOLTIP = "//div[@class='PriceHistory--tooltip']" data = driver.find_element('xpath',XPATH_TOOLTIP).text print(data)

Quiero que la información sobre herramientas aparezca usando JS.

¿Es posible simular el desplazamiento del mouse sobre el elemento? Además, ¿por qué el código funciona en algunos sitios pero no en otros, por ejemplo, funciona en este?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí hay 2 formas en que se puede interpretar su pregunta: -

Caso 1: solo desea que se active el evento "elemento sobrevolado" y no le preocupa que el puntero del mouse pase sobre el elemento.

Caso 2: desea que el puntero del mouse se mueva al lugar donde está el elemento y de esa manera (gráficamente, por así decirlo) pase el mouse sobre él.

SOLUCIONES :-

Caso 1: Este es el código JavaScript que podrías ejecutar usando selenio:

 // - THIS IS FOR DEMO, TO CHECK IF ELEMENT WAS HOVERED - element.addEventListener('mouseover', function() { console.log('Event triggered'); }); // - THIS IS FOR DEMO, TO CHECK IF ELEMENT WAS HOVERED - // Selecting the Element var element = document.querySelector('#main > div > div > div.Blockreact__Block-sc-1xf18x6-0.elqhCm > div > div.fresnel-container.fresnel-greaterThanOrEqual-xl.fill-remaining-height > div > div.Blockreact__Block-sc-1xf18x6-0.Flexreact__Flex-sc-1twd32i-0.FlexColumnreact__FlexColumn-sc-1wwz3hp-0.bEcedX.jYqxGr.ksFzlZ > div.Blockreact__Block-sc-1xf18x6-0.duVYOV > div > div.PriceHistory--graph > div > div > div.recharts-wrapper > svg > g.recharts-layer.recharts-bar > g > g:nth-child(80)'); // CREATING AN EVENT FOR HOVER var event = new MouseEvent('mouseover', { 'view': window, 'bubbles': true, 'cancelable': true }); // DISPATCHING THE EVENT, ie, ACTUALLY HOVERING element.dispatchEvent(event);

Si, después de ejecutarlo, todo salió bien, debería ver un mensaje de "Evento activado" en la consola del navegador.

Caso 2:

No hay forma, que yo sepa, a través de la cual pueda lograrlo, sin usar selenio. Como mencionó, ActionChains no se puede usar, por lo que también es un problema.

En caso de que simplemente no pueda usar ActionChains, pero puede usar Selenium ( que sé que no es lo que solicitó ), puede usar la siguiente guía paso a paso:

 STEP 1: Maximise the window [Required for Step 4] STEP 2: Get the scrollY position of the element you want to hover over (using Javascript). STEP 3: Scroll to the element using the scrollTo method (again using Javascript) STEP 4: You could use an alternative to PyAutoGui (which is a python library; you can use it if you are using python) that allows you to take the screenshot of the page, and then search for the image of the element throughout the page (using the `locateOnScreen` method). STEP 5: Once you have gotten the position on screen, you could move the cursor to that position, again using an alternative of PyAutoGui (or itself if you're using python), like in STEP 4.

La última respuesta es bastante complicada y debe usarse solo si está lo suficientemente desesperado como para hacer la tarea de forma gráfica y no puede encontrar una mejor respuesta :)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda