User Tools

Site Tools


informatica:linux:selenium

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:selenium [2019/10/17 11:13] joseinformatica:linux:selenium [2022/12/27 09:08] (current) jose
Line 319: Line 319:
  
 ====== Padres e hijos ====== ====== Padres e hijos ======
 +
 Tenemos el siguiente código: Tenemos el siguiente código:
 <code> <code>
Line 344: Line 345:
           </div>           </div>
         </div>         </div>
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="AUTONOMO CUENTA PROPIA">+        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="AUTONOMO CUENTA">
           <div class="promptDropdownNoBorderDiv">           <div class="promptDropdownNoBorderDiv">
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="AUTONOMO CUENTA PROPIA" id="saw_263580_c_1_ck3" aria-labelledby="saw_263580_c_1_ck3_cblabel" tabindex="-1" style="" type="checkbox"> +            <input name="saw_263580_c_1" class="checkboxRadioButton" value="AUTONOMO CUENTA" id="saw_263580_c_1_ck3" aria-labelledby="saw_263580_c_1_ck3_cblabel" tabindex="-1" style="" type="checkbox"> 
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck3" id="saw_263580_c_1_ck3_cblabel">AUTONOMO CUENTA PROPIA</label>+            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck3" id="saw_263580_c_1_ck3_cblabel">AUTONOMO CUENTA</label>
           </div>           </div>
         </div>         </div>
Line 354: Line 355:
 </div> </div>
 </code> </code>
 +{{:informatica:linux:padres_hijos.png|}}
  
 +Queremos hacer click en el checkbox, que es un campo input (la caja verde), pero es dinámico y no tiene el identificador. El indentificador está dentro del div que tiene el texto en title que es la caja padre en rojo
 +{{:informatica:linux:padres_hijos2.png|}}
  
 +Primero seleccionamos el bloque padre, buscando por div y title que queramos:
 +<code>
 +menu_click='NULL'
 +menu_click='AMA DE CASA'
 +menu_click='CUENTA AJENA FIJO'
  
 +xpath='//div[@title="' + menu_click + '"]'
 +padre = driver.find_element_by_xpath(xpath)
 +</code>
 +Ahora dentro de esa caja, selecctionamos el input para hacer click
 +<code>
 +xpath2='.//input[@type="checkbox"]'
 +hijo = padre.find_element_by_xpath(xpath2)
 +hijo.click()
 +</code>
 +
 +Si a partir de un elemento queremos seleccionar el padre:\\
 +Seleccionamos el elemento:
 +  xpath='//label[text()="AMA DE CASA"]'
 +  obj = driver.find_element_by_xpath(xpath)
 +Y a partir de ese elemento el padre:
 +  padre=obj.find_element_by_xpath("./..")
 +
 +
 +====== Grabar el contenido de la web en un archivo ======
 +
 +===== Texto =====
 +
 +
 +https://stackoverflow.com/a/50420667/2695864
 +
 +En mi caso fue muy útil porque no fui capaz, ni con chrome ni con firefox, de obtener el xpath de un popup que al hacer click en cualquier parte se cerraba.
 +
 +<code>
 +html = driver.execute_script("return document.body.innerHTML;")
 +with open("login.html","w") as f:
 +    f.write(html)
 +</code>
 +
 +===== Captura de pantalla =====
 +
 +<code>
 +fichero = f"{datetime.datetime.now():%Y%m%d_%H%M%S}"
 +driver.set_window_size(1080,1800)
 +driver.save_screenshot("captura.png")
 +driver.save_screenshot("captura_" + fichero + ".png")
 +</code>
  
informatica/linux/selenium.1571310819.txt.gz · Last modified: 2019/10/17 11:13 by jose