Java에서 selenium 배포에서 캡처 저장

18721 단어 셀레늄자바

목차



selenium이란?
목표
준비
도입 절차
테스트 케이스
테스트 케이스 실행

selenium이란?



Selenium은 브라우저의 자동화 도구입니다.
자동으로 브라우저를 조작하는 것으로 Web 사이트의 동작의 테스트등이 실시할 수 있습니다.

목표



자바 selenium 소개, 크롬 열기 → 야후 뉴스로 전환 → 캡처까지.

준비



Java 프로젝트 작성



프로젝트 이름 "selenium"

selenium DL



Java selenium version3.141.59

Google 크롬 DL



최신 버전

Chromedriver DL



GooglChrome과 동일한 버전의 것

JUnit DL



Download and install에서 junit.jar, hamcrest-core.jar의 최신 jar 버전을 다운로드하십시오.

도입 절차



1.selenium 프로젝트 바로 아래에 lib 폴더와 exe 폴더 만들기 만들기





2. 다운로드한 selenium-java-3.141.59.zip 내의 libs 폴더내의 .jar 파일 전부와 client-combined-3.141.59.jar를 작성한 lib 폴더에 카피한다.



3. lib 폴더에 복사한 jar 파일을 클래스 경로에 추가



selenium 프로젝트의 속성에서 Java 빌드 경로를 추가합니다.



4. 다운로드한 Chromedriver.exe를 만든 exe ​​폴더에 복사합니다.



이것으로 준비 완료입니다.

테스트 케이스



실제로 움직여갑니다.
이 근처를 참고로 하면 대체로 움직일 수 있다.
htps : // 이 m/ゔぁ_나카츠/있어 ms/0095755dc48
htps : // 이 m / 떡 / ms / dc9935 예 607895420186

프로젝트 구성





· ChromeTest.java



메인 처리 부분.
TestSetting.java를 상속받습니다.
selenium에서는 Javascript가 사용 가능.
package test.selenium;

import java.io.IOException;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriverException;

import util.TestUtils;

public class ChromeTest extends TestSetting {

    /**
     * テスト実行処理
     *
     * @throws WebDriverException
     * @throws IOException
     */
    @Test
    public void testChrome() throws WebDriverException, IOException{
        // キャプチャ保存フォルダを作成
        String path = TestUtils.mkdir(this.capturePath, "保存フォルダ");

        // YAHOOニュースページに遷移
        this.driver.get("https://news.yahoo.co.jp/");

        // ITニュース一覧画面へ遷移
        this.driver.findElement(By.cssSelector("#snavi > ul.yjnHeader_sub_cat > li:nth-child(7)")).click();

        // 画面をキャプチャする
        TestUtils.screenShot(this.driver, path, "スクショ");

        // 画面を下へ移動
        JavascriptExecutor js = (JavascriptExecutor) this.driver;
        js.executeScript("window.scrollBy(0,3000)");

        // 画面をキャプチャする
        TestUtils.screenShot(this.driver, path, "画面移動後");
    }
}

· TestSetting.java



테스트를 실행할 때 처음 작동하고 캡처 저장 폴더를 만들고 Chrome을 열어줍니다.
package test.selenium;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import util.TestUtils;



public class TestSetting {

    // キャプチャ用ファイル配置先
    protected String capturePath;

    protected WebDriver driver;

    // テスト実行前動作
    @Before
    public void initSet() throws IOException{
        // 実行ユーザーのデスクトップパスを取得する
        String desktopPath = System.getProperty("user.home") + "\\Desktop";

        // デスクトップにキャプチャ保存フォルダを作成
        this.capturePath = TestUtils.mkdir(desktopPath, "キャプチャ保存フォルダ");

        // Chromedriveのパスを通す
        System.setProperty("webdriver.chrome.driver", "./exe/chromedriver.exe");

        // ダウンロード先を指定のフォルダに変更する
        Map<String, Object> dir = new HashMap<String, Object>();
        dir.put("download.default_directory", this.capturePath);

        ChromeOptions option = new ChromeOptions();
        option.setExperimentalOption("dir", dir);

        // chromeを起動
        this.driver = new ChromeDriver();

        // ウィンドウを最大化
        this.driver.manage().window().maximize();
    }

    // テスト実行後動作
    @After
    public void yeild() throws IOException{
        // chromeを閉じる
        this.driver.quit();
    }
}

· TestUtils.java



스크린샷 처리 및 캡처 폴더 작성 처리
package util;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.Augmenter;

public class TestUtils {

    /**
     * 表示部分をスクリーンショット
     *
     * @param driver
     * @param path
     * @param filename
     * @throws IOException
     */
    public static void screenShot(WebDriver driver, String path, String filename) throws IOException{

        driver.manage().timeouts().implicitlyWait(30,  TimeUnit.SECONDS);
        driver.switchTo().defaultContent();
        TakesScreenshot ts = (TakesScreenshot) new Augmenter().augment(driver);
        Path from = Paths.get(ts.getScreenshotAs(OutputType.FILE).toURI());
        Path to = Paths.get(path + "\\" + filename + ".png");
        Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);
    }

    /**
     * キャプチャ用のフォルダを指定の場所に作成
     *
     * @param dirpath
     * @param dirname
     * @return
     * @throws IOException
     */
    public static String mkdir(String dirpath, String dirname) throws IOException{
        String path = Paths.get(dirpath, dirname).toString();

        if(Files.notExists(Paths.get(dirpath,  dirname))) {
            Files.createDirectories(Paths.get(dirpath, dirname));
        }
        return path;
    }
}


테스트 케이스 실행



ChromeTest.java를 「실행」->「JUnit 테스트」로부터 실행하면 Chrome이 기동해 데스크탑상에 ​​캡쳐 보존 폴더가 만들어져 캡쳐한 것이 보존된다.

좋은 웹페이지 즐겨찾기