페이지가 Selenium에 완전히 로드되었는지 확인하는 일반 기능이 있나요?
웹페이지에 페이지가 완전히 로드되었는지 확인하려고 합니다. Selenium을 사용하여 로딩을 완료했습니다. 코드를 사용하여 시도했지만 페이지가 로드되는 동안에도 기다리지 않습니다. 특정 요소의 가시성이나 클릭 가능성을 검사하는 솔루션이 아닌 일반적인 솔루션을 추구합니다.
답변:
아니요, 웹 전체 로딩 page.
설명:
코드를 살펴보겠습니다.
new WebDriverWait(firefoxDriver, pageLoadTimeout).until( webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));
이 코드의 pageLoadTimeout 변수는 실제로 실제 pageLoadTimeout과 일치하지 않습니다. () 함수입니다.
단, 페이지가 완전히 로드된 경우 DesiredCapability 또는 ChromeOptions 클래스를 사용하여 "normal"(다른 가능한 값에는 "none" 및 "eager" 포함)로 설정된 pageLoadStrategy()를 사용할 수 있습니다. 예는 다음과 같습니다.
DesiredCapability 사용:
DesiredCapabilities dcap = new DesiredCapabilities(); dcap.setCapability("pageLoadStrategy", "normal"); FirefoxOptions opt = new FirefoxOptions(); opt.merge(dcap); WebDriver driver = new FirefoxDriver(opt);
사용 ChromeOptions:
ChromeOptions opt = new ChromeOptions(); opt.setPageLoadStrategy(PageLoadStrategy.NORMAL); WebDriver driver = new FirefoxDriver(opt);
고려 사항:
PageLoadStrategy를 "normal"로 설정하면 브라우저 클라이언트가 'document.readyState'와 동일한 상태에 도달하게 됩니다. "완벽한." 하지만 이것이 모든 JavaScript 및 Ajax 호출이 완료되었음을 보장하지는 않습니다.
이 문제를 해결하려면 모든 JavaScript 및 Ajax 호출이 완료될 때까지 기다리는 함수를 사용할 수 있습니다.
public void WaitForAjax2Complete() throws InterruptedException { while (true) { if ((Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0")){ break; } Thread.sleep(100); } }
또는 ExpectedConditions와 함께 WebDriverWait를 사용하여 특정 이벤트나 요소를 기다릴 수 있습니다. 상태:
// Wait for a specific part of the page title new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("partial_title_of_application_under_test")); // Wait for a specific element to become visible WebElement ele = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_of_the_desired_element")));
참조:
위 내용은 완전한 웹 페이지 로딩을 확인하는 일반 Selenium 기능이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!