Selenium WebDriver 입문

3282 단어 selenium-webdriver

소개



Selenium의 일부 지식 정리에서 jenkins로 실행시키는 곳까지 기재합니다.
루비를 사용하고 싶습니다.

Selenium이란?



웹 브라우저를 사용하여 웹 애플리케이션을 테스트하는 도구.
사람의 손을 사용해 테스트하고 있던 부분을 Selenium이 브라우저 조작해 준다.

Selenium WebDriver란?



Selenium RC와 WebDriver를 통합한 것.

Selenium RC란?



HTML 형식으로 기술된 스크립트 1 에 Java, Ruby 등 프로그래밍 언어를 추가하여 고급 스크립트 생성을 가능하게 했다.
Selenium RC에서는 로컬 PC상에서 중계 서버(Selenium Server)를 기동해, 이 중계 서버상에서 ruby등의 스크립트가 동작해 JavaScript의 코드를 Web 페이지에 임베드하고 있었다.
이것에 의해 Web 서버상에 스크립트를 두지 않아도 끝나게 되었다. 1
하지만 JavaScript로 조작할 때 브라우저의 보안 제한에 의해 많은 동작에 제약을 받고 있었다.

WebDriver란?



WebDriver에서는, 테스트 실행시에 브라우저 조작을 브라우저 확장 기능이나, OS의 네이티브 기능을 사용해 실시하도록(듯이) 했다. 그 때문에 중계 서버가 불필요하게 되어 보안의 제약을 받는 문제도 해결했다.

이 두 가지를 통합한 것이 Selenium WebDriver입니다.
Selenium2라고도 불리는 것 같습니다.

실천



Selenium WebDriver는 각 브라우저마다 드라이버를 제공하는 것 같습니다.

드라이버 준비



이번에는 Chrome을 사용합니다.
Chrome의 경우 Chrome 드라이버를 설치해야 하므로 여기에서 다운로드합니다.

※자신은 homebrew를 사용하고 있으므로 brew install chromedriver 로 인스톨 했습니다.

이것만이라면 Selenium이 정의하고 있는 RESTful API(JSON Wire Protocol)에 따라 HTTP 요청을 발행하고, 반환된 응답을 해석하고 용도에 맞게 또 HTTP 요청을 발행...

공식에서 클라이언트 라이브러리 2이 나와있는 것 같고, 그것을 사용하면 좋은 것 같습니다. 아래가 제공되는 언어인 것 같습니다.
  • Java
  • Ruby
  • Python
  • C#
  • JavaScript (Node.js)

  • 클라이언트 라이브러리 준비



    루비로 하기 때문에 그 환경을 준비합니다. (Node.js로 할까 ...gem install selenium-webdriver

    코드 작성



    절차
  • vi test.rb 치는
  • 다음을 작성
  • require "selenium-webdriver"
    
    # Chrome用のドライバを指定
    driver = Selenium::WebDriver.for :chrome
    
    # Googleの画像検索にアクセス
    driver.navigate.to "https://www.google.co.jp/imghp"
    
    # name属性にqが設定されている要素を取得
    inputElement = driver.find_element(:name, 'q')
    
    # 取得した要素にパンケーキを設定
    inputElement.send_keys "パンケーキ"
    
    # name属性にbtnGが設定されている要素を取得
    submitElement = driver.find_element(:name, 'btnG')
    
    # 取得した要素をクリック
    submitElement.click
    
    # スクリーンショットを撮る
    driver.save_screenshot('tabetai.png')
    
    # テストを終了
    driver.quit
    
    

    3. ruby test.rb 치다

    다음 이미지가 실행 프로그램의 현재 디렉토리에 있다고 생각합니다.


    환경의 작성, 실행이 복잡하지 않기 때문에 좋네요,,

    jenkins로 실행시키는 곳까지 쓰고 싶었습니다만, 다음의 갱신으로 씁니다 m(_ _)m



    Selenium Core를 살펴보십시오. Selenium의 원형입니다

    각 클라이언트 라이브러리에는 대응하지 않는 드라이버가 있을 가능성도 있어, 그 경우는 Selenium Server를 사용하는 것 같습니다. 이것은 Java로 작성된 것 같습니다.

    좋은 웹페이지 즐겨찾기