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:12] 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 tabindex="-1" class="masterMenuItem promptMenuOption" title="CUENTA AJENA FIJO"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="CUENTA AJENA FIJO" id="saw_263580_c_1_ck4" aria-labelledby="saw_263580_c_1_ck4_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck4" id="saw_263580_c_1_ck4_cblabel">CUENTA AJENA FIJO</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="CUENTA AJENA TEMPORAL"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="CUENTA AJENA TEMPORAL" id="saw_263580_c_1_ck5" aria-labelledby="saw_263580_c_1_ck5_cblabel" tabindex="-1" style="" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck5" id="saw_263580_c_1_ck5_cblabel">CUENTA AJENA TEMPORAL</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="ESTUDIANTE"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="ESTUDIANTE" id="saw_263580_c_1_ck6" aria-labelledby="saw_263580_c_1_ck6_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck6" id="saw_263580_c_1_ck6_cblabel">ESTUDIANTE</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="FUNCIONARIO"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="FUNCIONARIO" id="saw_263580_c_1_ck7" aria-labelledby="saw_263580_c_1_ck7_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck7" id="saw_263580_c_1_ck7_cblabel">FUNCIONARIO</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="NO ALTA SEG.SOCIAL"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="NO ALTA SEG.SOCIAL" id="saw_263580_c_1_ck8" aria-labelledby="saw_263580_c_1_ck8_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck8" id="saw_263580_c_1_ck8_cblabel">NO ALTA SEG.SOCIAL</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="NO TYPE JOB"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="NO TYPE JOB" id="saw_263580_c_1_ck9" aria-labelledby="saw_263580_c_1_ck9_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck9" id="saw_263580_c_1_ck9_cblabel">NO TYPE JOB</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="NOT IDENTIFIED"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="NOT IDENTIFIED" id="saw_263580_c_1_ck10" aria-labelledby="saw_263580_c_1_ck10_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck10" id="saw_263580_c_1_ck10_cblabel">NOT IDENTIFIED</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="OTHERS"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="OTHERS" id="saw_263580_c_1_ck11" aria-labelledby="saw_263580_c_1_ck11_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck11" id="saw_263580_c_1_ck11_cblabel">OTHERS</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="PENSIONISTA"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="PENSIONISTA" id="saw_263580_c_1_ck12" aria-labelledby="saw_263580_c_1_ck12_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck12" id="saw_263580_c_1_ck12_cblabel">PENSIONISTA</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="PROFESIONAL"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="PROFESIONAL" id="saw_263580_c_1_ck13" aria-labelledby="saw_263580_c_1_ck13_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck13" id="saw_263580_c_1_ck13_cblabel">PROFESIONAL</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="RENTISTA"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="RENTISTA" id="saw_263580_c_1_ck14" aria-labelledby="saw_263580_c_1_ck14_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck14" id="saw_263580_c_1_ck14_cblabel">RENTISTA</label> +
-          </div> +
-        </div> +
-        <div tabindex="-1" class="masterMenuItem promptMenuOption" title="SIN EMPLEO"> +
-          <div class="promptDropdownNoBorderDiv"> +
-            <input name="saw_263580_c_1" class="checkboxRadioButton" value="SIN EMPLEO" id="saw_263580_c_1_ck15" aria-labelledby="saw_263580_c_1_ck15_cblabel" tabindex="-1" type="checkbox"> +
-            <label class="checkboxRadioButtonLabel" for="saw_263580_c_1_ck15" id="saw_263580_c_1_ck15_cblabel">SIN EMPLEO</label>+
           </div>           </div>
         </div>         </div>
Line 426: 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.1571310762.txt.gz · Last modified: 2019/10/17 11:12 by jose