บทความนี้จะมาสอนวิธีลง Selenium IDE ใช้งานกับ Google Chrome ร่วมกับ Python เบื้องต้น โดยติดตั้งลงบน Windows มาเริ่มกันที่ก่อนอื่นให้เราไปโหลด Extension ของ Google Chrome ที่ https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd?hl=en
มาทดลองการใช้งานกันหน่อย โดยไปที่ Extension เลือก Selenium IDE
เลือก Create a new project และตั้งชื่อ project
ใส่เว็บ Facebook ไปทดสอบหน่อย กด START RECORDING
จะมาที่หน้าเว็บที่เราจะทดสอบก็จะเห็น Selenium IDE is recording อยู่ด้านขวาล่างสีแดงๆ ให้เรากรอก Username password
ในหน้าต่าง Selenium เราก็จะเห็น Command ต่างๆที่เราทำการบันทึกเกิดขึ้นเป็น Command เมื่อเราบันทึกเสร็จแล้วให้เรากดปุ่ม Stop recording ขวามือบน เราสามารถทดสอบการทำงานตามที่เราบันทึกไปได้โดยกดปุ่ม Play Run all tests ด้านซ้ายมือเพื่อทดสอบดูได้
เราสามารถ Export ออกมาเป็น Code เพื่อนำมาเขียนเงื่อนไขต่างๆเพื่อประยุกต์การใช้งานได้โดยการคลิกขวาที่ Test แล้วเลือก Export
จะเห็นว่าสามารถเลือกภาษาที่เราใช้งานได้ไม่ว่าจะเป็น C#, Java, Javascript, Python, Ruby โดยในที่นี้จะเลือกเป็น Python แล้วกด Export
ก็จะได้ Code Python มาตามด้านล่างนี้
# Generated by Selenium IDE import pytest import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class TestLogin(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {} def teardown_method(self, method): self.driver.quit() def test_login(self): # Test name: login # Step # | name | target | value # 1 | open | https://www.facebook.com/ | self.driver.get("https://www.facebook.com/") # 2 | setWindowSize | 974x1050 | self.driver.set_window_size(974, 1050) # 3 | click | id=email | self.driver.find_element(By.ID, "email").click() # 4 | click | id=email | self.driver.find_element(By.ID, "email").click() # 5 | type | id=email | username self.driver.find_element(By.ID, "email").send_keys("username") # 6 | type | id=pass | pass self.driver.find_element(By.ID, "pass").send_keys("pass")
โดยก่อนใช้งาน Selenium กับ python เราจะต้องไปติดตั้ง pytest และ selenium โดยใช้คำสั่ง
pip install pytest pip install selenium
แล้วก็ที่ขาดไม่ได้เลยก็คือ Chrome Driver
https://sites.google.com/a/chromium.org/chromedriver/home
ปัจจุบัน ย้ายมาที่นี้ https://sites.google.com/chromium.org/driver/downloads
หรือใช้ จาก Google APIS ก็ได้ https://chromedriver.storage.googleapis.com/index.html
เลือก Chrome และ OS ให้ตรงกับเวอร์ชั่นที่เราใช้อยู่
Unzip แล้วนำไปวางที่ Drive C:
ก่อนที่จะ run เราต้องแก้ไข code บรรทัดที่ 15 เป็น
self.driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe")
และเพิ่มบรรดทัดที่ 37 – 39
obj = TestLogin() obj.setup_method(obj) obj.test_login()
ก็จะกลายเป็นแบบนี้ save เป็นไฟล์ชื่อว่า test_login2.py
# Generated by Selenium IDE import pytest import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class TestLogin(): def setup_method(self, method): self.driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe") self.vars = {} def teardown_method(self, method): self.driver.quit() def test_login(self): # Test name: login # Step # | name | target | value # 1 | open | https://www.facebook.com/ | self.driver.get("https://www.facebook.com/") # 2 | setWindowSize | 974x1050 | self.driver.set_window_size(974, 1050) # 3 | click | id=email | self.driver.find_element(By.ID, "email").click() # 4 | click | id=email | self.driver.find_element(By.ID, "email").click() # 5 | type | id=email | username self.driver.find_element(By.ID, "email").send_keys("username") # 6 | type | id=pass | pass self.driver.find_element(By.ID, "pass").send_keys("pass") obj = TestLogin() obj.setup_method(obj) obj.test_login()
แล้วเราลองนำ code นี้ไป run ดูใน command line
python test_login2.py
ก็จะเห็นว่าตัว Selenium จะทำการเปิด Chrome (จะเห็นว่ามีขึ้นว่า Chrome is being controlled by automated test software) แล้วทำงานตาม command ที่เราเขียนอัตโนมัติแล้วละ