Y ya repasando los videos vi que era super facil usar variables. No logro imigar la instrucción para contar elementos de las 2 tablas que debo recorrer (x estar en un shadowroot imagino que es muy diferente), pero por ahora me manejaré con tamaños fijos que levantaré de un archivo, y ya pude con estRead more
Y ya repasando los videos vi que era super facil usar variables. No logro imigar la instrucción para contar elementos de las 2 tablas que debo recorrer (x estar en un shadowroot imagino que es muy diferente), pero por ahora me manejaré con tamaños fijos que levantaré de un archivo, y ya pude con esta tarea XD
Bueno, ya con Run JS pude extraer texto, ineractuar, etc. Ahora tengo que ver si/como podría usar variables en la generación del código JS que quiero correr para no tener que poner 14 x 2 líneas (tengo una tabla de 14 filas y tengo que extraer el texto de 2 columnas de cada fila :P )
Bueno, ya con Run JS pude extraer texto, ineractuar, etc.
Ahora tengo que ver si/como podría usar variables en la generación del código JS que quiero correr para no tener que poner 14 x 2 líneas (tengo una tabla de 14 filas y tengo que extraer el texto de 2 columnas de cada fila 😛 )
No se xq mi repsuesta de mas arriba quedó en mi post original, se ve que toqué algo mal. Leyendo tu mensaje, dudo si tengo que descartar la parte python al no haber iframe e ir directo a lo siguiente que es JS, o igual necesito hacer funcionar lo de arriba?.
No se xq mi repsuesta de mas arriba quedó en mi post original, se ve que toqué algo mal. Leyendo tu mensaje, dudo si tengo que descartar la parte python al no haber iframe e ir directo a lo siguiente que es JS, o igual necesito hacer funcionar lo de arriba?.
Ya vi que el manual es el últmo. En mi caso el elemento inmediato previo al Shadow-root es: <div class="mds-accounts-table-container"> Dentro tiene: <mds-data-table-for-accounts WebRead more
Ya vi que el manual es el últmo.
En mi caso el elemento inmediato previo al Shadow-root es:
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
webdriver = GetGlobals(«web»)
if webdriver.driver_actual_id in webdriver.driver_list:
driver = webdriver.driver_list[webdriver.driver_actual_id]
# Primero seleccionas el padre del primer shadow-root
shadow_host = driver.find_element(By.CSS_SELECTOR, ‘mds-data-table-for-accounts’)
# Estas siguientes tres líneas son siempre igual
shadow_root_dict = driver.execute_script(‘return arguments[0].shadowRoot’,shadow_host)
shadow_root_id = shadow_root_dict[‘shadow-6066-11e4-a52e-4f735466cecf’]
shadow_root = WebElement(driver, shadow_root_id, w3c=True)
# Cuando ingresas al ultimo shadow-root, solo debes obtener el elemento que corresponda con el iframe al que debes ingresar
#shadow_content = shadow_root.find_element(By.CSS_SELECTOR, ‘row-header-row0-column0’)
# Y para finalizar, utilizas el comando que cambia al iframe
#driver.switch_to_frame(shadow_content)
Entre el manual y google lo probé así con «By.CSS_SELECTOR» o «By.ID» (como dice el manual).
En el caso de usar ID tenía que usar el ID dentro de la tabla.
Con CSS_Selector puedo usar lo que esta antes del ID. (no enconre como hacer «By.Class, o sea, usando la clase del DIV).
En todos los casos, la línea «shadow_root = WebElement(driver, shadow_root_id, w3c=True)» arroja «‘ShadowRoot’ object is not subscriptable.
Vale aclarar que se programar, pero no uso python con frecuencia.
Google y chatGPT mediante, probe diferentes cosas, pero n ose si estoy fallando yo o me faltan las instrucciones correctas para seleccionar «cosas» dentro del shadow root (ahí siempre me daban errores).
DUDA: para trabajar en este tipo de sitios, tengo que hacerlo todo por código, o se puede ejecutar algo que al terminar me deja posicionado dentro del shadow root de modo que pueda hacer click y extraer texto con funciones normales?
vi el manual, pero el código que tiene es aparentemente de antes de selenium 4.1 y de antes de chrome 96, o eso me pareció. Salvo que haya uno mas nuevo y no lo este yo encontrando?
vi el manual, pero el código que tiene es aparentemente de antes de selenium 4.1 y de antes de chrome 96, o eso me pareció.
Salvo que haya uno mas nuevo y no lo este yo encontrando?
Acceder a shadow-root / shadow-dom
rcocchiararo
Y ya repasando los videos vi que era super facil usar variables. No logro imigar la instrucción para contar elementos de las 2 tablas que debo recorrer (x estar en un shadowroot imagino que es muy diferente), pero por ahora me manejaré con tamaños fijos que levantaré de un archivo, y ya pude con estRead more
Y ya repasando los videos vi que era super facil usar variables. No logro imigar la instrucción para contar elementos de las 2 tablas que debo recorrer (x estar en un shadowroot imagino que es muy diferente), pero por ahora me manejaré con tamaños fijos que levantaré de un archivo, y ya pude con esta tarea XD
See lessAcceder a shadow-root / shadow-dom
rcocchiararo
Bueno, ya con Run JS pude extraer texto, ineractuar, etc. Ahora tengo que ver si/como podría usar variables en la generación del código JS que quiero correr para no tener que poner 14 x 2 líneas (tengo una tabla de 14 filas y tengo que extraer el texto de 2 columnas de cada fila :P )
Bueno, ya con Run JS pude extraer texto, ineractuar, etc.
Ahora tengo que ver si/como podría usar variables en la generación del código JS que quiero correr para no tener que poner 14 x 2 líneas (tengo una tabla de 14 filas y tengo que extraer el texto de 2 columnas de cada fila 😛 )
See lessAcceder a shadow-root / shadow-dom
rcocchiararo
No se xq mi repsuesta de mas arriba quedó en mi post original, se ve que toqué algo mal. Leyendo tu mensaje, dudo si tengo que descartar la parte python al no haber iframe e ir directo a lo siguiente que es JS, o igual necesito hacer funcionar lo de arriba?.
No se xq mi repsuesta de mas arriba quedó en mi post original, se ve que toqué algo mal. Leyendo tu mensaje, dudo si tengo que descartar la parte python al no haber iframe e ir directo a lo siguiente que es JS, o igual necesito hacer funcionar lo de arriba?.
See lessAcceder a shadow-root / shadow-dom
rcocchiararo
Ya vi que el manual es el últmo. En mi caso el elemento inmediato previo al Shadow-root es: <div class="mds-accounts-table-container"> Dentro tiene: <mds-data-table-for-accounts WebRead more
Ya vi que el manual es el últmo.
En mi caso el elemento inmediato previo al Shadow-root es:
<div class="»mds-accounts-table-container»">
Dentro tiene:
<mds-data-table-for-accounts id=»accountsTableAG1Table0″ …blablba….
El código a usar:
Entre el manual y google lo probé así con «By.CSS_SELECTOR» o «By.ID» (como dice el manual).
En el caso de usar ID tenía que usar el ID dentro de la tabla.
Con CSS_Selector puedo usar lo que esta antes del ID. (no enconre como hacer «By.Class, o sea, usando la clase del DIV).
En todos los casos, la línea «shadow_root = WebElement(driver, shadow_root_id, w3c=True)» arroja «‘ShadowRoot’ object is not subscriptable.
Vale aclarar que se programar, pero no uso python con frecuencia.
Google y chatGPT mediante, probe diferentes cosas, pero n ose si estoy fallando yo o me faltan las instrucciones correctas para seleccionar «cosas» dentro del shadow root (ahí siempre me daban errores).
DUDA: para trabajar en este tipo de sitios, tengo que hacerlo todo por código, o se puede ejecutar algo que al terminar me deja posicionado dentro del shadow root de modo que pueda hacer click y extraer texto con funciones normales?
See lessAcceder a shadow-root / shadow-dom
rcocchiararo
vi el manual, pero el código que tiene es aparentemente de antes de selenium 4.1 y de antes de chrome 96, o eso me pareció. Salvo que haya uno mas nuevo y no lo este yo encontrando?
vi el manual, pero el código que tiene es aparentemente de antes de selenium 4.1 y de antes de chrome 96, o eso me pareció.
Salvo que haya uno mas nuevo y no lo este yo encontrando?
See less