Click en botón con Selenium webdrive

publicado por: Anonymous

Soy nuevo en Python y estoy tratando de hacer click en el siguiente botón con estructura HTML:

<div class="buttons">
    <input name="ctl00$cphMain$mscSeats$tabStatus$btnDeviceMissingModal" value="Dispositivo" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$mscSeats$tabStatus$btnDeviceMissingModal&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="cphMain_mscSeats_tabStatus_btnDeviceMissingModal" class="modal btnRed border-radius cboxElement" href="#pnlReportMissingConfirm" type="submit">
</div>

Intenté usando el siguiente código:

element = driver.find_element_by_xpath("//input[@name='ctl00$cphMain$mscSeats$tabStatus$btnDeviceMissingModal']")

element.click()

solución

Para evitar los problemas de tiempo al buscar elementos, es recomendable usar clases de selenium como Wait o FluentWait. FluentWait busca el elemento y si no lo encuentra lo busca cada x tiempo, que tu le indiques, hasta un tiempo y maximo.

Por ejemplo, en tu caso buscaria el input cada segundo durante 10 segundos. De esta forma no tienes que modificar el sleep en función de cuanto tarde cada vez.

Yo uso java para selenium y queda algo asi, para buscar un elemento clickable, por ejemplo:

   return new FluentWait<WebDriver>(driver)
            .withTimeout(IMPLICIT_TIMEOUT, TimeUnit.SECONDS)
            .pollingEvery(RETRY_TIME, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class)
            .until(ExpectedConditions
                    .elementToBeClickable(By.xpath(xpath)));
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *