บทความนี้จะมาสอนวิธีลง 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 ที่เราเขียนอัตโนมัติแล้วละ