[Selenium] Selenium

HyunDong Lee·2021년 5월 17일
post-thumbnail

Webdriver

  • 테스트 케이스를 생성하고 실행하는 API
  • Provides a set of methods
  • Uses DOM locators to i/o or manipulate the document objects
  • 각 브라우저 별 webdriver
    테스트 스크립트를 작성할 여러 언어 별 method 제공
    java, c#, php, python, perl, ruby
  • POM(page object model) 기반 webdriver scripting
    Form/click activity 기반
  • selenium RC(romote control)와 합쳐 짐
  • 빠른 execution time
    Remote machine에서 web 테스트할 때는 RC 사용(느림)
  • 상세한 테스트 결과 보고는 아직 생성할 수 없음

POM

  • page object model(POM)은 웹 UI 요ㅗ에 대한 객체 저장소를 만드는 디자인 패턴이다.
  • 이 모델에서는 응용 프로그램의 각 웹 페이지 마다 해당 페이지 webelements에서 작업을 수행하는 page 메서드를 포함한다.
  • 이 메서드의 ㅣ름은 수행중인 태스크에 따라 지정되어야한다. 즉, 로더가 지불 게이트 웨이가 표시되기를 기다리는 경우 POM 메소드 이름은 waitForPaymentScreenDisplay()가 될 수 있다.

selenium python

step 1: download python
step 2: install python & pip
pip = package installer for python
cmd $python --version && pip version
step 3: install selenium python libraries
pip install -U selenium
step 4: download a python IDE - pycharm community
step 5: create a new project in pycharm
step 6: add selenium scripts to the project
step 7: run & validate

demo.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://google.com")
driver.find_element_by_name("q").send_keys("Hongik University")
driver.find_element_by_name("btnK").click()
driver.maximize_window()
driver.refresh()
time.sleep(2)
driver.quit()
print("Test Completed Successfully.")

unit test example

from selenium import webdriver
import unittest
import HtmlTestRunner
import time

class DemoUnitTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        #cls.driver = webdriver.Chrome(executable_path= "C:\\Users\\lstev\\Documents/4_1semester/SWE/selenium/chromedriver.exe")
        cls.driver = webdriver.Chrome(
            executable_path="C:\\Users\\lstev\\Documents\\4_1semester\\SWE\\selenium\\chromedriver.exe")
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    def test_GoogleSearch_Hongik(self):
        self.driver.get("https://google.com")
        self.driver.find_element_by_name("q").send_keys("Hongik University")
        self.driver.find_element_by_name("btnK").click()

    @classmethod
    def tearDownClass(cls):
        time.sleep(3)
        cls.driver.close()
        cls.driver.quit()


print("Test Done Successfully!")

if __name__ == '__main__':
    unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='C:/Users/L-/PycharmProjects/SelTest1/reports'))

test result

0개의 댓글