ABOUT ME

Today
Yesterday
Total
  • 재귀 함수 성능을 향상시키는 방법은 무엇입니까?
    카테고리 없음 2020. 8. 20. 21:23

    질문

    재귀 함수를 만들었습니다. 이 함수의 목표는 요소를 찾을 때까지 모든 프레임을 탐색하는 것입니다. 그러나 그것은 매우 느립니다.

    기능은 아래에서 찾으십시오.

    private WebElement browseFramesToFindElement(By locator) {
        WebElement element = null;
        if (isElementPresent(locator, 1))
            element = this.driver.findElement(locator);
    
        if (element == null) {
            List<WebElement> frames = this.driver.findElements(By.xpath("//frame"));
            int i = 0;
            while (i < frames.size() && element == null) {
                this.driver.switchTo().frame(this.driver.findElement(By.xpath("//frame[@id = '" + frames.get(i).getAttribute("id") + "']")));
                element = browseFramesToFindElement(locator);
                if (element == null)
                    driver.switchTo().parentFrame();
                i++;
            }
        }
        return element;
    }
    
    private boolean isElementPresent(By by, int secToWait) {  
        this.driver.manage().timeouts().implicitlyWait(secToWait, TimeUnit.SECONDS);  
        try {  
            this.driver.findElement(by);  
            return true;  
        } catch (NoSuchElementException e) {  
            return false;
        }
    }

    성능 향상이 가능한지 말씀해 주시겠습니까? 그리고 어떻게? 미리 감사드립니다.


    답변1

    성능 문제가 비효율적 인 재귀 알고리즘과 관련이 있는지 잘 모르겠습니다. 다음과 같이 제안합니다.

    • xpath 로케이터를 CSS 로케이터로 변경하십시오 (아마도 도움이 될 것입니다)
    • 대기 시간 제한을 조정하고 결과를 확인합니다 (확실하지 않지만 방향을 제시 할 수 있음).


     

     

     

     

    출처 : https://stackoverflow.com/questions/61244618/how-to-improve-resursive-function-performance

    댓글

Designed by Tistory.