如果元素在网页上不可用,如何在 selenium 失败前重试最多3次

mfuanj7w  于 2022-12-18  发布在  其他
关注(0)|答案(1)|浏览(98)

我正在为在网页上查找WebElement的重试机制实现一个 Package 器方法,我的要求是如果元素不可用,在失败之前最多重试3次我如何实现这个方法,下面是我的代码,它正确吗?

public static WebElement findElementWithRetry(WebDriver driver, By by, int retryCount){
            WebElement element = null;
            try {
                wait = new WebDriverWait(driver, 30);
                element = wait.until(ExpectedConditions.visibilityOfElementLocated(by));
            } catch (Exception e) {
                //TODO: handle exception
                for(int i=0; i<retryCount; i++){
                    element = driver.findElement(by);
                    if(element.isDisplayed())
                        return element;
                }
            }
            return element;
        }
vfh0ocws

vfh0ocws1#

不如这样:

for(int i = 1; i <= retryCount; i++) {
    try { 
        WebElement element = new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(by));
        if (element.isDisplayed()) {
            return element
        }
    }
    catch(TimeOutException e) {
        // ignore
    }
}
throw new ValueError(String.format("Element %s not found after %s retries", by, retryCount));

相关问题