-
재귀 함수 성능을 향상시키는 방법은 무엇입니까?카테고리 없음 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