CURSOS

Rocketbot Suite (Level 1)

¡Este contenido está protegido, por favor, e inscríbete en el curso para ver este contenido!

60 comments

  1. Buen día, en el ejercicio la clase que trae el precio es igual a la clase que trae el valor de la cuota si se adquiere el elemento a cuotas. ¿que alternativa existe para que el valor corresponda al del articulo y no al de la cuota?

    1. Hola!,

      En ese caso tendrías que buscar la clase que más se acomode, por ejemplo esta ui-search-price ui-search-price–size-medium ui-search-item__group__element trae el valor del artículo, pero también trae el precio anterior tachado arriba + el precio con descuento, ahí tendrías que poner decisiones.

      Si tienes más dudas te invitamos a nuestro foro: http://forum.rocketbot.co/

      Saludos!.-

    2. Richard Teófilo Angeles Paredes

      Lo más adecuado es usar:
      nombre
      return document.getElementsByClassName(‘ui-search-item__title’)[{cont}].innerText

      precio
      return document.getElementsByClassName(‘ui-search-price__second-line’)[2*{cont}].getElementsByClassName(‘price-tag-fraction’)[0].innerText

      Saludos,

      1. Funcionó! Gracias!

  2. “pero también trae el precio anterior tachado arriba + el precio con descuento, ahí tendrías que poner decisiones.”
    ¿Qué decisiones se pueden poner?

    1. Hola Henry!,

      Depende de qué quieres que realice tu robot, qué quieres obtener, si te trae los dos datos puedes realizar un split y separar para luego tomar el que te sirva, por ejemplo el que tiene la palabra OFF, o el que no la tiene.

      Te dejo el link del foro para más consultas: http://forum.rocketbot.co/

      Saludos!.-

  3. Marcela, porque no usar un for en vez de while, si conoces cuantas veces tienes que iterar?

    1. Cosa de gustos, si quieres puedes realizarlo con un For y ver cuál te es más eficiente.

  4. Hola, con respecto a algunas funcionalidades del rocketbot developer studio, tienen alguna opción para enviar recomendaciones de detalles que seria interesante que se implementaran? por ejemplo,

    1. puede ser algo muy simple pero seria muy chevere que al momento de ingresar un comentario en la descripción en vez de dar click sobre guardar solo fuera necesario dar enter

    2. Se tiene alguna forma de dejar visible solo las descripciones con la idea de ocupar menos espacio en el panel de eventos

    Solo esas 2, pero si veo algo más y no les molesta lo voy a dejar por el momento en comentarios

    1. Hola Camilo!

      Lo tendremos en cuenta, todo se evalúa con el equipo.

      Gracias,

      Saludos!

  5. Hola buen dia, tengo una consulta hay alguna forma de de formatear el texto que extraigo cuando trae una tilde para que la mantenga? es que me paso con un par de textos que en ves de la letra con la tilde venian otros caracteres.

    Saludos!

    1. Hola Alexis!,

      Si, si obtienes el texto y viene algo como esto b'est\xe1'

      Le puedes hacer un decode(‘Latin-1’) con Asignar variable.

      Para más dudas y consultas favor visitar nuestro Foro: http://forum.rocketbot.co/

      Saludos!.-

      1. Angela María Guarín Rivera

        Hola,

        Lo hice con el decode que indicas, pero no me funcionó:
        “{nombre}”.decode(‘Latin-1’)

        De igual forma, publiqué la pregunta en el foro a ver si me guían en la solución.

  6. Saludos Marcela;

    En el momento de copiar y pégar el “document.getElementsByClassName(“ui-search-item__title”).length” en el depurador me muestra datos, esto lo pego en “Ejecutar JS” y lo guardo en la variable total. Pero una vez que ejecuto en la variable el dato guardado es b’0′, ya intente guardar el proyecto, eliminar la variable y el evento .
    Su gentil ayuda para poder continuar.

    gracias.

    1. Hola emendoza!,

      Estás agregando el return antes de esa instrucción?.
      Cómo es la secuencia de comandos que tienes?

      Saludos!.-

      1. Escribo este comentario por si a alguien más le sirve:
        Me paso exactamente lo mismo que a emendoza19 diciembre 4, 2020 at 3:59 am. En la variable llegaba y aparecia b’0′

        Ejecute el bot varias veces y después de un tiempo funcionó, llegando b’26’ (usé otra web)
        Por lo tanto si les pasa, reintenten y esperen unos minutos

  7. Hola Buen dia !!!
    El curso esta muy interesante, pero me gustaria saber como puedp instalar una biblioteca de python en rocketbot. ¿crees que me puedas apoyar en eso?

    1. Hola Luz!,

      Estás realizando algún Script?, si es así debes instalar la librería en la siguiente ruta Rocketbot/modules/libs especificándolo así: pip install nombre_libreria -t . (con ese -t el punto al final), para que se instale ahí y no en tu sistema.

      Saludos!.-

  8. Buenas tardes una consuta a alguien le sale con el precio por articulo que no corresponde ya que pareciera que si trae el nombre del articulo de acuerdo al numero del contador, pero el precio con un retraso de 2 articulos? o solo me pasa a mi?

    muchas gracias

    1. Hola Daniel,

      Como escribió Richard anteriormente, en ese caso podrías utilizar la siguiente instrucción para el precio: return document.getElementsByClassName(‘ui-search-price__second-line’)[2*{cont}].getElementsByClassName(‘price-tag-fraction’)[0].innerText

      Ya que el valor se va intercalando entre la posición 0-2-4, etc, se le agrega un 2* antes del contador, obteniendo así el valor correcto.

      Saludos!.-

  9. Hola Buenas, existe alguna manera de aplicar un decode() a una lista en asignar variable ?

    Tengo el siguiente código dentro de un comando ejecuta js:

    const Nombres = document.getElementsByClassName(‘ui-search-item__title’);
    let Arreglo = new Array();

    for(x = 0, Largo = Nombres.length; x < Largo; x++){
    Precio = document.getElementsByClassName('price-tag-fraction')[x].innerText;
    Arreglo.push({ Producto: Nombres[x].innerText, Precio: Precio });
    }
    return Arreglo;

    asignar variable: {ListadoProducto} = return Arreglo

    y mi otra duda es: Existe la manera de crear una lista con el comando asignar variable ?
    Ej: {Listado} = ["{nombre}" + ' ' + "{precio}"]

    Saludos

    1. Hola Luciano,

      Podrías en el mismo JS realizar un decode luego de obtener el valor, sino, tendrías que recorrer la lista con un for e ir decodificando los valores.

      Respecto a lo segundo, si puedes crear una lista desde Asignar Variable de esta forma: {array}.__add__(["{dato1}","{dato2}"]) o también así: {array} + ["{dato1}","{dato2}"]
      Además puedes utilizar el comando Execute Python del menú Script y realizarlo ahí directamente.

      Saludos!.-

  10. No me marca como avanzado. Ya que salí suspendido en la evaluación de variables. Su ayuda por favor!!!!

    1. Hola Luis,

      Aumentamos los intentos del cuestionario a 5, por lo que te quedan 3 intentos más, puedes revisar las respuestas y ver en qué te equivocaste para así poder aprobar en los otros intentos.

      Saludos.-

  11. No me recibe ese comando en el while, me sale un error.

    1. Hola Andres,

      Qué comando? qué error te muestra?

  12. Hola Marcela, Al abrir chrome me reclama por la version yo tengo la 90 y solo esta soportada a la version 86. tienen fecha de soporte a la version 90?

    Saludos

    1. Marcela
      Ya lo arregle reemplazando el driver.
      saludos

      1. Hola Sergio!, super 😀

        Saludos!.-

  13. Marcela
    Ya lo arregle reemplazando el driver.
    saludos

  14. Hola en este caso especifico aparecen 53 elementos pero que pasa cuando en la pagina hay mas pero no son visibles ya que es necesario bajar el scroll para que carguen , como se podria realizar esta actividad?

    1. Hola Norbey, puedes utilizar el comando Scroll del módulo WebPro.

  15. Hola Marcela que tal mucho gusto, soy Gabriel Tejeida y soy parte del equipo de Interact Solutions. Te comento que en mi caso, me atrase con respecto a los demás en el nivel 1 porque desafortunadamente se me averió mi equipo y apenas me lo entregaron el martes pasado. Yo ahorita estoy en el proceso de ponerme al corriente y estoy en la sesión 8 de Excel, sin embargo apenas ahorita me esta marcando un error en el log de la ventana de arranque de Rocketbot y me dice que no puede abrir mis robots anteriores. Con base a tus ejercicios fui guardando al menos 4 robots con sus respectivos comandos y variables y apenas hoy me aparece este error. Antes los abría cada uno y me aparecían completos conforme los iba elaborando. Pero hoy, los abro y me aparecen completamente vacíos y solo me respeto los nombres. ¿Me puedes apoyar por favor? ¿Cuál podría ser el problema?

    1. Hola Gabriel,

      Cuál es el error que te muestra en consola?, si vas a la pestaña Robots en Proyecto te aparecen los anteriormente guardados?

  16. en el caso del while, la condición tiene que ser solo menor que y no menor igual, debido a que los arreglos en javascript empiezan en 0 y terminan en lenght – 1, por lo que que el código tal cual como está, generaría un error en el último elemento

    1. Ernesto,

      Toda la razón, en ese caso se debe validar como indicas.

  17. como se obtendría el elemento href? Lo digo porque es útil el nombre y el precio, pero también la url del artículo, para en caso de que la persona tome una decisión, ya tenga el url de donde ir

    1. Hola, debes realizarlo con JS, te dejo unos ejemplos que te pueden servir:

      https://stackoverflow.com/questions/15439853/get-local-href-value-from-anchor-a-tag

  18. Para la parte de los precios yo tengo una mejor alternativa en el ejecutar de JS:
    //1
    var i = document.getElementsByClassName(“ui-search-price ui-search-price–size-medium”);
    //2
    if(i[{count}].getElementsByClassName(“price-tag-fraction”).length==2){
    //3
    var u = i[{count}].getElementsByClassName(“price-tag-fraction”)[1].innerText;
    }else{
    //4
    var u = i[{count}].getElementsByClassName(“price-tag-fraction”)[0].innerText;
    }
    //5
    return u;

    ******Explicacion********
    //1 : se le asigna a “i” el contenido de la clase descrita (la clase: ui-search-price ui-search-price–size-medium coincide con los 50 elementos que, en mi caso, me arroja mercado libre y coincide tambien con los titulos por lo cual los podemos recorrer a la par con el contador
    //2 : me di de cuenta que cuando hay precios con descuento se generan dos clases iguales llamadas price-tag-fraction, una contiene el precio anterior y el otro contiene el precio actual, nos interesa el precio actual por lo cual evaluamos con un IF cuantos price-tag-fraction hay y tomamos una decision
    //3 si la primera condicion se da, es decir que dentro de “i” se encuentren 2 price-tag… entonces se iguala a “u” el contenido del segundo price-tag…
    //4 De lo contrario si solo encuentra 1 price-tag… se iguala a “u” el contenido del primer price-tag…
    //5 Se retorna u.

    Si algo no les queda claro bien pueden preguntar. 🙂

    1. Efren Emanuel Rodriguez Perez

      Buenas bro.
      Al momento que lo reviso, para el precio, creo que con la primera parte que pones es suficiente:

      NOMBRE:
      return document.getElementsByClassName(“ui-search-item__title”)[{cont}].innerText

      PRECIO:
      return document.getElementsByClassName(“andes-money-amount ui-search-price__part–medium”)[{cont}].innerText
      ///Ya te trae el precio (hasta con el signo de la moneda)

  19. excelente profesora muchas gracias estoy aprendiendo demasiado

  20. en la parte de precio no esta entregando los precios de los elementos de corrido, el segundo valor a cada objeto debe ser pago en cuotas o descuento, por que hay un patron, por ejemplo valor 1 600k valor 2 100k valor 3 900k valor 4 150k, me explico?

    otra duda, el curso es asi 100? o hay clases. hay algun correo de contacto para realizar mas preguntas?

    1. Hola O-marin, la página cambió, revisa los comentarios donde se explica cómo puedes obtener los valores intercalados basicamente es realizar algo como esto return document.getElementsByClassName('price-tag-fraction')[2*{cont}].innerText
      Respecto a tu otra pregunta, no existe un correo de contacto, los canales regulares son el Foro o Slack para clientes y/o partners.

      Saludos!

  21. Tengo el siguiente problema: He realizado el ejercicio, ejecutado el robot y ha funcionado correctamente pero solo 1 par de veces.
    Las siguientes multiples veces, casi toda la tarde y noche, he ejecutado el robot y no ha funcionado correctamente:

    El problema es que lo ejecuto y no toma todos los productos ni precios, ( tampoco los valores del cont y total), apenas 1 o 2 productos.

    Fui a la consola de rocketbot y arroja los siguientes 3 errores: ”
    USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: Uno de los dispositivos conectados al sistema no funciona. (0x1f)

    algo de Can’t create base directory: C:\Program Files\Google\Googleupdater

    y otro error de passthrough is not supported, GL is disabled, ANGLE is

    Leyendo vi que puede ser algo de selenium con los driver de chrome . La verdad no entiendo porque ahora no funciona, si no he realizado ningun cambio o actualizacion.

    Revise el firewall y tiene permiso rocketbot, deshabilite el antivirus, desconecte el mouse y solo 1 pantalla conectada… pero no funcionó. Tambien intente varias veces cerrando la web y todo rocketbot, eliminando las cookies y nada. pasa exactamente lo mismo

    Espero puedan ayudarme a solucionarlo

    1. Hola Fernando, esos errores no deberían afectar al robot, si no encuentra todos los elementos quizás es tiempo, revisaste si tu variable de contar los elementos los trae todos?, también puedes poner alertas dentro del For, imprimiendo alguna variable y así validar si efectivamente está entrando y si está trayendo los datos que necesitas, cuando aparezca la alerta eso pausará la ejecución, por lo que te permitirá también poder revisar la consola de Rocketbot y ver si arroja algún error. Si continúas con error por favor escríbenos en el foro, puedes adjuntar tu bot y poner capturas para que el equipo encargado te puedan ayudar más rápidamente

      1. Marcela muchas gracias por tu ayuda y felicitaciones por los videos, explicas muy bien.

        Respecto al problema:
        El robot lo tengo similar al ejemplo.

        Acabo de ejecutar instrucción por instrucción y me funciono! 😀
        Me di cuenta que me ocurre el error cuando se ejecuta todo de 1 vez, con el botón de ejecutar que esta arriba.

  22. Gracias por la explicación.

  23. Buenas tardes quiero hacer una consulta respecto a como se podria hacer en rocketbot JS el evento “CLICK” en un BOTON que esta identificado en document.getElementsByTagName(‘td’)[99] que esta dentro de una colección de td’s que también la puedo identificar en collection class.

  24. Tengo una pregunta, como podría realizar que al extraer el dato y el precio con el while se queden almacenados en la misma variable y se puede realizar una lista, sea en esa o en otra variable adicional donde se puedan juntar los 2

    1. Hola Dennisjoel, podrías utilizar el comando Add data to array del menú Data format -> Array para ir agregando datos a una lista

  25. buen dia,

    me genera el siguiente error cuando le paso el comando al execute JS
    “return document.getElementsByClassName(‘ud-heading-md popular-topics-unit–topic-tag–3tYg-‘).length”

    WebDriverException: Message: disconnected: not connected to DevTools
    (failed to check if window was closed: disconnected: not connected to DevTools)
    (Session info: chrome=113.0.5672.93)
    Stacktrace:
    Backtrace:
    GetHandleVerifier [0x00A68893+48451]
    (No symbol) [0x009FB8A1]
    (No symbol) [0x00905058]
    (No symbol) [0x008F7BB6]
    (No symbol) [0x008F78D9]
    (No symbol) [0x00906460]
    (No symbol) [0x0095C038]
    (No symbol) [0x0094A0B6]
    (No symbol) [0x00927E08]
    (No symbol) [0x00928F2D]
    GetHandleVerifier [0x00CC8E3A+2540266]
    GetHandleVerifier [0x00D08959+2801161]
    GetHandleVerifier [0x00D0295C+2776588]
    GetHandleVerifier [0x00AF2280+612144]
    (No symbol) [0x00A04F6C]
    (No symbol) [0x00A011D8]
    (No symbol) [0x00A012BB]
    (No symbol) [0x009F4857]
    BaseThreadInitThunk [0x76827D59+25]
    RtlInitializeExceptionChain [0x7728B74B+107]
    RtlClearBits [0x7728B6CF+191]

    1. Hola SamZG, la ventana del navegador está abierta o fue cerrada en algún momento? revisar también que el elemento al que se hace referencia exista

  26. Hola Marcela. por alguna razón no me funciona el comando decode… hay dos caracteres al final del comando que no logro descifrar porque mi compu no me muestra nitido el video. me podrías ayudar con eso por favor? No logro seguir avanzando, he probado {} {] y {)

    1. Hola Crismoliyo, es de esta forma {var}.decode(), con paréntesis luego del punto

  27. Eliana Corrales Vanegas

    Estoy haciendo los ejercicios planteados, pero tengo un error con la versión de chrome

    SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 110
    Current browser version is 119.0.6045.160 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
    Stacktrace:
    Backtrace:
    (No symbol) [0x00943643]
    (No symbol) [0x008D8981]
    (No symbol) [0x007DB35D]
    (No symbol) [0x007FED2D]
    (No symbol) [0x007F9B50]
    (No symbol) [0x007F6F89]
    (No symbol) [0x00831EB5]
    (No symbol) [0x00831B0C]
    (No symbol) [0x0082B1F6]
    (No symbol) [0x00800D57]
    (No symbol) [0x008024FD]
    GetHandleVerifier [0x00BBB5F2+2513186]
    GetHandleVerifier [0x00BEB730+2710112]
    GetHandleVerifier [0x00BEECDC+2723852]
    GetHandleVerifier [0x009F2250+640384]
    (No symbol) [0x008E1142]
    (No symbol) [0x008E6AD8]
    (No symbol) [0x008E6BBB]
    (No symbol) [0x008F09FB]
    BaseThreadInitThunk [0x77187BA9+25]
    RtlInitializeExceptionChain [0x77DBBD2B+107]
    RtlClearBits [0x77DBBCAF+191]

    Como puedo dar solución a este?

    1. Hola Eliana, el error es porque tu versión de Chrome se actualizó a la 119 y el driver que viene en rocketbot es de la versión 110, por lo tanto debes actualizarlo, te dejo un video que te puede ayudar: https://youtu.be/A5KJ6NxDow8?si=6QEP_R2M9qQxzRcj

  28. Hola buenas tardes,

    al agregar esta línea me da error y no me convierte el dato de la variable total
    {total}.decode{}
    después del decode ya intente con paréntesis, corchetes y me da error, que puede ser?

    1. Hola José, debe ser con paréntesis, qué error te da? y qué datos tienes en total?

  29. Efren Emanuel Rodriguez Perez

    Buen día.
    Estoy probando con su versión 2024.02.15_beta. Sin embargo veo varios cambios, uno en el que me estoy atorando, sobre este tema de RUN JS, es que el decode ya lo exige dentro de los parámetros, pero no encuentro la sintaxis, ¿me podría ayudar por favor?
    Gracias.

    1. Efren Emanuel Rodriguez Perez

      Ya encontré cómo es. Solo hay que poner tal cuál la codificación, sin ningún otro tipo de comando; como lo indica la sugerencia que trae. Ej.: utf-8

      Tiene muchas mejoras está versión 2024, te reduce incluso líneas de instrucciones. Seguiré estudiándola y practicándola.

Responder a Marcela Vergara Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.

es_ESSpanish