자바 언어에 배치 셀레늄 요소의 11 - 사용은 일반적으로 대기하는 API를 사용

명시 적 및 암시 대기 대기 : WebDriver는 대기의 두 가지 유형을 제공합니다.

1. 디스플레이 대기

명시 대기 WebDriver 방법을 제공하는, 즉 엘리먼트의 판단을 기다리는.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedCondition;
 
 
public class TimeOut01 {
 
  public static void main(String[]args) throws InterruptedException {
 
    WebDriver driver = new ChromeDriver();
    driver.get("https://www.baidu.com");
 
    //显式等待, 针对某个元素等待
    WebDriverWait wait = new WebDriverWait(driver,10,1);
 
    wait.until(new ExpectedCondition<WebElement>(){
      @Override
      public WebElement apply(WebDriver text) {
            return text.findElement(By.id("kw"));
          }
    }).sendKeys("selenium");
 
    driver.findElement(By.id("su")).click();
    Thread.sleep(2000);
 
    driver.quit();
  }
}

WebDirver에서 제공 WebDriverWait 클래스 대기 방법. 설정된 시간 내에서 시간으로 기본 시간은 현재의 페이지 요소가 존재하면 테스트하고, 예외를 감지하지 못합니다 설정 시간을 초과하는 경우 발생합니다. 형식은 다음과 같습니다 WebDriverWait (드라이버, 10, 1) 드라이버 : 브라우저 드라이버. 10 초에서 가장 긴 제한 시간, 기본. 1. 검출 구간 (단계)는 기본적으로 0.5 초이다.

2. 암시 대기

WebDriver 요소를 기다릴 수있는 여러 가지 방법을 제공합니다.

  • implicitlyWait. 타임 아웃 물체를 식별 할 때. 이 시간이 지나면 개체가 발견되지 다음 경우 NoSuchElement 예외가 발생합니다.
  • setScriptTimeout. 시간 제한 비동기 스크립트. 비동기 스크립트를 실행 WebDriver,이 스크립트는 비동기 스크립트 타임 아웃의 결과를 반환 수행하도록 설정되어 있습니다.
  • pageLoadTimeout. 페이지 타임 아웃로드. WebDriver는 다시 진행하기 전에 페이지 로딩을 기다리는, 그래서 페이지가 아직로드되지 설정 한 시간을 초과하는 경우, 다음 WebDriver는 예외가 발생합니다 때문입니다.
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By;
import java.util.concurrent.TimeUnit;
 
public class TimeOut02 {
 
  public static void main(String[] args){
 
    WebDriver driver = new ChromeDriver();
 
    //页面加载超时时间设置为 5s
    driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
    driver.get("https://www.baidu.com/");
 
    //定位对象时给 10s 的时间, 如果 10s 内还定位不到则抛出异常
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.findElement(By.id("kw")).sendKeys("selenium");
 
    //异步脚本的超时时间设置成 3s
    driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);
 
    driver.quit();
  }
}

추천

출처www.cnblogs.com/zhizhao/p/11303296.html