page-object 모듈 사용법

SeleniumWebDriver를 사용한 E2E 테스트(브라우저 테스트?)의 자동화에 대해서, PageObject 디자인 패턴을 사용하면 좋다, 라고 하는 것은 알았습니다만, page-object 모듈 되는 것이 있는 것 같습니다.

cheezy/page-object

실은 수중에 있는 (전임자가 쓴) 테스트가 이것을 사용하고 있어, 그 사용법을 제대로 이해할 수 없었기 때문에 조사해 보았습니다. (초보적인 것뿐입니다만)
  • 환경
  • Windows8.1
  • Ruby 2.2.2
  • gem install page-object 시토쿠

  • Ruby도 프로그램도 미숙자이므로, 쓰는 방법이나 개선점을 지적해 주시면 기쁩니다. . .
  • 이번은 페이지의 조작을 시도해 보았습니다. 이번 Page 객체와 그것을 사용하는 측을 같은 파일에 써 버렸습니다만, 실제의 테스트에서는 RSpec를 사용하고 있으므로 xxx_page.rbxxx_spec.rb 가 되어 있습니다.
  • 하고 있는 일
  • 구글에서 '일본 무술관'검색


  • page-object 모듈을 사용하지 않는 경우



    testA.rb
    # coding: utf-8
    require 'selenium-webdriver'
    
    # Pageクラス
    class TestAPage
    
      def initialize(driver)
        @driver = driver
      end
    
      def search_query(q)
        # 要素の特定に find_element 使う
        @driver.find_element(:name, "q").send_keys(q)
        @driver.find_element(:name, "btnK").click
      end
    end
    
    # Pageを操作する
    driver = Selenium::WebDriver.for :firefox
    driver.get("https://www.google.co.jp/")
    search_page = TestAPage.new(driver)
    search_page.search_query("日本武道館")
    

    실행은
    > ruby testA.rb
    



    이런 식으로 일본 무도관을 검색해 줍니다. (그 결과, 무엇이 어떻게 되면 테스트로서 OK라고 판단해도 좋은 것인가, 라고 하는 것은 다른 이야기로서 w)

    page-object 모듈을 사용하는 경우



    testB.rb
    # coding: utf-8
    require 'page-object'
    
    # Pageクラス
    class TestBPage
    
      # includeします
      include PageObject
    
      # これで要素を操作できるようになります
      text_field(:query, :name => 'q')
      button(:search_btn, :name => 'btnK')
    
      def search_query(q)
        self.query = q
        self.search_btn
      end
    end
    
    # Pageを操作する
    driver = Selenium::WebDriver.for :firefox
    driver.get("https://www.google.co.jp/")
    search_page = TestBPage.new(driver)
    search_page.search_query("日本武道館")
    

    실행은
    > ruby testB.rb
    

    결과는 TestA와 동일합니다.

    요약



    이번에는 요소가 2개입니다만, 실제의 테스트에서는 대량으로 find_element 해야 하는 것이 많습니다. 그럴 때 편리하자.

    그 외에 text_field 가 어떤 일을 해 주는지는
    h tp // w w. 하는 by c. Infu / Giute b / Chie Zy / Pageo bji ct / Pageo bji ct / 어서 rs # xt_fue ld-in s tanse_me d 에 있습니다.

    adds four methods to the page object - one to set text in a text field, another to retrieve text from a text field, another to return the text field element, another to check the text field's existence.

    text_field에 대해 「set」 「get」 「element 취득」 「존재 확인」의 4개의 메소드가 준비되어 있는 것 같습니다.

    덧붙여 : 요소의 조작에 대해서는
    htps : // 기주 b. 코 m / Chie Zy / Pageo bji ct / Uuki / Eemen ts
    에 자세히 쓰여져 있습니다.

    수수께끼


    page-object 모듈을 사용할 때
    require 'selenium-webdriver'
    

    하지 않아도 움직이는 건 어떨까.

    좋은 웹페이지 즐겨찾기