martes, 10 de abril de 2018

XPATH

XPath (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. XPath permite buscar y seleccionar objetos teniendo en cuenta la estructura jerárquica del archivo XML sobre el que se aplica. Cabe aclarar que un archivo html es estructuralmente hablando, un archivo xml, es decir posee una estructura jerárquica separa en nodos de distinto índice.


XPath permite entonces encontrar uno de estos nodos, para nosotros controles web, según la posición que este ocupa en el árbol del xml. Esto puede realizarse de tres maneras distintas, la primera es utilizando el XPath absoluto del nodo, es decir su posición partiendo desde la raiz. De esta forma se construye un camino donde se indica, desde la raíz del árbol, por qué nodos se debe pasar para alcanzar el nodo deseado.
El segundo método, XPath relativo, es similar al anterior con la diferencia de que parte desde un nodo en lugar de la raíz y desde allí construye el camino hacia el nodo objetivo. El tercer método utiliza la función contains y permite localizar un control que contenga un atributo específico y que dicho atributo posea un valor determinado.


Ejemplos:


Xpath absoluto: contruyo el camino hacia el nodo objetivo desde la raíz del árbol (etiqueta html)


//html/body/div[5]/div[1]/div[3]/div/button[2]


Xpath relativo: contruyo el camino desde un nodo conocido (identifico el divo por el atributo ID)


//div[@id='SimpleClaimSearch:SimpleClaimSearchScreen:SimpleClaimSearchResultsLV']/div[1]/div[3]/div/button[2]




Xpath función contains: utilizo la función contains para hallar el nodo.


//button[contains(@data-tid, "dt-suggested-create-team-button")]


Sintaxis de la función Contais: etiqueta del nodo + [contains(@atributo, "valor del atributo")]

Cómo pasar TimeStamp a formato fecha en Excel

Timestamp

Comenzaré definiendo a timestamp por el sentido utilizado en informática que difiere un poco de su forma "normal" especificada en la ISO 8601.  Así podemos decir que existen dos definiciones de Timestamp: según UNIX el tipo de dato Timestamp es la cantidad de segundos transcurridos desde media noche (00:00:00) UTC del primero de enero de 1970.  Pero también se utilizan la cantidad de milisegundos transcurridos desde esa misma fecha, por lo que al momento de realizar la conversión vamos a tener que saber con que timestamp estamos trabajando, es decir si es o no un timestamp UNIX.  Esto puede ser un problema para nosotros humanos, sobre todo cuando tenemos que presentar esta información en reportes y, si bien la mayoría de las herramientas que existen hoy día ofrecen alguna función para pasar de Timestamp a una fecha legible por nosotros, Excel no lo hace, o al menos no hasta el momento de escribir este artículo.  Para solucionar ese problema podemos podemos aplicar la fórmula que dejo a continuación tomando en cuenta que la columna destino (aquella donde se copia la fórmula) debe colocarse en formato fecha y, dado que la marca de tiempo del dato origen contiene dia, mes, año, hora, minuto y segundo, el formato elegido debería adaptarse a lo que necesitemos mostrar.,

Fórmula

=(A2/1000 + ("1/1/1970"-"1/1/1900"+1)*86400) / 86400 -3/24)

Donde:

A2 representa la celda con el timestamp origen

/1000 reduce el número de milisegundos a segundos (no debe usarse si el timestamp a convertir ya está en segundos)

("1/1/1970"-"1/1/1900"+1) excel opera como primer día calendario el primero de enero de 1900, por esto esta parte de la fórmula se encarga de equiparar el momento cero de UNIX con el momento cero de excel.

*86400 convierte a segundos el momento cero

/86400 convierte a días tiempo transcurrido desde el momento cero hasta el capturado en el timestamp (A2)

-3/24 recordemos que timestamp parte de UTC 0, por lo tanto si en nuestro país se utiliza un uso horario distinto, en mi caso, Argentina tiene  UTC-3, por lo que deberemos agregar esta porción a la fórmula para que funcione donde -3 representa el UTC que deseamos utilizar