Both sides previous revisionPrevious revisionNext revision | Previous revision |
informatica:linux:selenium [2019/10/17 11:12] – jose | informatica:linux:selenium [2022/12/27 09:08] (current) – jose |
---|
| |
====== Padres e hijos ====== | ====== Padres e hijos ====== |
| |
Tenemos el siguiente código: | Tenemos el siguiente código: |
<code> | <code> |
</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> |
</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> |
| |