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
Last revisionBoth sides next revision
informatica:linux:selenium [2019/10/17 11:12] joseinformatica:linux:selenium [2020/05/08 09:17] – [Padres e hijos] javi
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 ======
 +
 +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>
informatica/linux/selenium.txt · Last modified: 2022/12/27 09:08 by jose