Safari에 selenium-webdriver를 통해 selenide에서 실행

소개



MacOS를 다시 설치했기 때문에 webdriver도 다시 넣습니다.
그런 다음 자바 테스트 프레임 워크 selenide에서 작동하도록 설정할 수 있습니다.

운영 환경



2017/01/17 시점에서 다음 환경에서 실행했습니다.
· MacOs Sierra
· safari 10.0
· Gradle 3.3
· IntelliJ IDEA

참고 사이트



Safari 10의 WebDriver 네이티브 지원
Safari 10, WebDriver 탑재

소개


  • webdriver 설치
  • Gradle에 selenide 설정
  • Java에서 테스트 소스 코딩 및 테스트 실행

  • webdriver 설치



    safari10보다 표준으로 들어있는 모양
    하지만 아래 단계를 밟아 간다.

    우선 safari의 "원격 자동화를 허용한다"를 on으로 한다.



    터미널에서 첫 번째 부팅을 수행합니다.
    touchbar 탑재기의 경우는 touchID로 패스를 입력하지 않아도 된다.

    명령
    /usr/bin/safaridriver --port 0
    

    build.gradle



    build.gradle
    buildscript {
        ext {
            // SpringBoot framework
            springBootVersion = "1.4.3.RELEASE"// 2016,1223
    
            // Others
            // Selenide
            selenideVersion = "4.2"// 2016,1226
            // Selenium
            seleniumVersion = "3.0.1"// 2017,0117
        }
        repositories {
            jcenter()
        }
    }
    ext['selenium.version'] = '3.0.1'// 2017,0117
    dependencies {
    
            // SpringBoot projects
            testCompile("org.springframework.boot:spring-boot-starter-test:$springBootVersion")
            compile("org.springframework.boot:spring-boot-starter-thymeleaf:$springBootVersion")
            compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion")
    
            // Others
            // Selenide
            testCompile("com.codeborne:selenide:$selenideVersion")
            testCompile("org.seleniumhq.selenium:selenium-server:$seleniumVersion")
            // SafariDriver
            testCompile("org.seleniumhq.selenium:selenium-safari-driver:$seleniumVersion")
    
    }
    

    Springboot에 내장되어 테스트 실행



    PageControllerSelenideTest.java
    public class PageControllerSelenideTest {
    
        @BeforeClass
        public static void setUpClass() {
    
            // テスト対象アプリの起動
            WebApp.main(new String[]{""});
            Configuration.browser = WebDriverRunner.SAFARI;
        }
        @After
        public void tearDown() {
        }
    
    
        @AfterClass
        public static void tearDownClass() {
            WebDriverRunner.closeWebDriver();
        }
    
        @Test
        public void test() throws Exception {
            // Test対象画面をページオブジェクトパターンで実装
            ChoiceQuestionPage page = ChoiceQuestionPage.open();
    
            Selenide.screenshot("init");
        }
    }
    

    IntelliJ에서 실행하면 이런 식으로 스쿠쇼 찍어주고있다


    힘든 일



    IntelliJ 종속성 중에서 selenium이 오랫동안 이전 버전을 참조하고 오류가 자주 발생했습니다.
    spring-boot-starter-web을 기본적으로 사용하면 이전 버전을 끌어 버리는 것 같습니다.
    원인은 아래 페이지를 들여다 보면 어쩐지 전해질 것이라고 생각합니다.
    spring-boot-dependencies
    또, Safari의 라이브러리가 selenide로부터 제외되고 있거나, 참고로 하는 페이지가 없거나라고 오로지 try&error를 밟고 있었습니다.

    소스는 이쪽



    MultiModule-Sudoku

    좋은 웹페이지 즐겨찾기