首页 > 解决方案 > 检查按钮是否可用?如果不等待 5 秒再检查一次?

问题描述

基本上我正在尝试查看当前是否可以单击按钮。如果没有,我想再试一次。所以我需要某种 goto 函数来返回我的代码的前一行。虽然我怀疑我写得非常糟糕,而且它本来可以做得更容易。

try {
    driver.findElement(By.xpath("//button[@id='btn_ok']")).click();
}catch (Exception e) {
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}   

对于上下文,这是有问题的按钮罪魁祸首。

<button type="submit" value="ok" name="s1" id="btn_ok" class="green">

标签: javaseleniumselenium-webdriverwaitgoto

解决方案


您可以使用流利的等待。这将每隔 5 秒检查一次按钮是否可点击,持续 30 秒。您可以根据需要调整时间。试试这个代码并给出反馈是否有效。

 Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)                           
                .withTimeout(30, TimeUnit.SECONDS)          
                .pollingEvery(5, TimeUnit.SECONDS)          
                .ignoring(NoSuchElementException.class);
        WebElement clickseleniumlink = wait.until(new Function<WebDriver, WebElement>(){

            public WebElement apply(WebDriver driver ) {
                return driver.findElement(By.xpath("//button[@id='btn_ok']"));
            }
        });
        clickseleniumlink.click();

推荐阅读