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 revision Previous revision
Next revision
Previous revision
informatica:linux:selenium [2019/09/24 09:20]
javi [Python firefox headless local]
informatica:linux:selenium [2019/10/17 14:14] (current)
jose
Line 316: Line 316:
 o.click() o.click()
 </​code>​ </​code>​
 +
 +
 +====== Padres e hijos ======
 +Tenemos el siguiente código:
 +<​code>​
 +<div class="​floatingWindowDiv"​ style="​position:​ absolute; z-index: 1001; width: 222px; visibility: visible; top: 444px; display: block; left: 678px;">​
 +  <div style="​display:​ block; z-index: 400; position: static; width: 222px; left: 0px; top: 0px;" tabindex="​-1">​
 +    <div style="​display:​ none;" class="​masterMenu DropDownLoading">​
 +      <​span>​Please Wait</​span></​div>​
 +      <div class="​masterMenu DropDownValueList"​ tabindex="​-1"​ style="​display:​ block; height: 150px;"​ loadingcompleted="​true">​
 +        <div tabindex="​-1"​ class="​masterMenuItem promptMenuOption"​ title="​(All Column Values)"​ style="">​
 +          <div class="​promptDropdownNoBorderDiv">​
 +            <input name="​saw_263580_c_1"​ class="​checkboxRadioButton"​ value="​*)nqgtac(*"​ id="​saw_263580_c_1_ck0"​ aria-labelledby="​saw_263580_c_1_ck0_cblabel"​ tabindex="​-1"​ style=""​ type="​checkbox">​
 +            <label class="​checkboxRadioButtonLabel"​ for="​saw_263580_c_1_ck0"​ id="​saw_263580_c_1_ck0_cblabel">​(All Column Values)</​label>​
 +          </​div>​
 +        </​div>​
 +        <div tabindex="​-1"​ class="​masterMenuItem promptMenuOption"​ title="​NULL">​
 +          <div class="​promptDropdownNoBorderDiv">​
 +            <input name="​saw_263580_c_1"​ class="​checkboxRadioButton"​ value="​*)nqgtn(*"​ id="​saw_263580_c_1_ck1"​ aria-labelledby="​saw_263580_c_1_ck1_cblabel"​ tabindex="​-1"​ type="​checkbox">​
 +            <label class="​checkboxRadioButtonLabel"​ for="​saw_263580_c_1_ck1"​ id="​saw_263580_c_1_ck1_cblabel"​ style="">​NULL</​label>​
 +          </​div>​
 +        </​div>​
 +        <div tabindex="​-1"​ class="​masterMenuItem promptMenuOption"​ title="​AMA DE CASA">​
 +          <div class="​promptDropdownNoBorderDiv">​
 +            <input name="​saw_263580_c_1"​ class="​checkboxRadioButton"​ value="​AMA DE CASA" id="​saw_263580_c_1_ck2"​ aria-labelledby="​saw_263580_c_1_ck2_cblabel"​ tabindex="​-1"​ style=""​ type="​checkbox">​
 +            <label class="​checkboxRadioButtonLabel"​ for="​saw_263580_c_1_ck2"​ id="​saw_263580_c_1_ck2_cblabel">​AMA DE CASA</​label>​
 +          </​div>​
 +        </​div>​
 +        <div tabindex="​-1"​ class="​masterMenuItem promptMenuOption"​ title="​AUTONOMO CUENTA">​
 +          <div class="​promptDropdownNoBorderDiv">​
 +            <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</​label>​
 +          </​div>​
 +        </​div>​
 +      </​div>​
 +   </​div>​
 +</​div>​
 +</​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("​./​.."​)
 +
 +
 +
 +
informatica/linux/selenium.1569309615.txt.gz · Last modified: 2019/09/24 09:20 by javi