การใช้ Selenium ใน Python เพื่อควบคุมเว็บเบราว์เซอร์สามารถทำให้การทำงานอัตโนมัติของเว็บต่าง ๆ ง่ายขึ้น เช่น การดึงข้อมูล, กรอกฟอร์ม, หรือการทดสอบหน้าเว็บ การใช้งาน Selenium ค่อนข้างง่ายและยืดหยุ่น โดยเฉพาะอย่างยิ่งเมื่อใช้งานร่วมกับเบราว์เซอร์เช่น Ms Edge, Chrome หรือ Firefox
เมาส์ การพิมพ์คีย์บอร์ด และการทำงานอื่นๆ ที่ผู้ใช้งานทำเองด้วยตนเอง โดยเป็นไลบรารีที่เหมาะกับการทำงานอัตโนมัติ เช่น การทดสอบ UI ของโปรแกรม หรือการทำงานซ้ำๆ ที่ต้องการการคลิกหรือการพิมพ์
ขั้นตอนการใช้งาน Selenium เบื้องต้น:
1. ติดตั้ง Selenium และ WebDriver
ติดตั้ง Selenium: เปิด terminal หรือ command prompt แล้วรันคำสั่ง:
pip install selenium
2. โหลด WebDriver :
WebDriver เป็นเครื่องมือที่ช่วยให้ Selenium ควบคุมเบราว์เซอร์ ซึ่ง เราสามารถใช้งาน Driver Manager เพื่อให้มีการ Load Driver ล่าสุดตาม Code ด้านล่าง ซึ่งขอใช้เป็น Ms Edge หรือ Firefox นะครับ เพราะ Driver Manager ของ Chrome นั้นยังมี Bug อยู่
from selenium import webdriver
#สำหรับ Microsoft Edge
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()
#สำหรับ Firefox
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.firefox.service import Service
driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()))
3. เริ่มใช้งาน:
ตัวอย่าง Code ในการเปิด เวป “www.google.com” แล้วค้นหาคำว่า “Selenium Python
” สามารถ Copy Code ไปรันได้เลย
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# สร้าง instance ของ WebDriver
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install())
driver.implicitly_wait(5)
# เข้าเว็บไซต์
driver.get('https://www.google.com')
# ค้นหา element ตามประเภทต่าง ๆ เช่น ID, Name, Class
search_box = driver.find_element(By.NAME, 'q')
# พิมพ์ข้อความลงในช่องค้นหา
search_box.send_keys('Selenium Python')
# ส่งคำค้นหา
search_box.send_keys(Keys.RETURN)
4. การค้นหา Element บนหน้าเว็บ
Selenium สามารถค้นหา elements บนหน้าเว็บได้หลายวิธี ซึ่ง แนะนำให้ใช้งานเรียบลำดับจากบนลงล่าง เนื่องจากมีผลต่อ Performance:
- By.ID: ค้นหาโดยใช้ ID ของ element
- By.NAME: ค้นหาโดยใช้ name attribute
- By.CLASS_NAME: ค้นหาโดยใช้ class name
- By.TAG_NAME: ค้นหาโดยใช้ชื่อ tag (เช่น
div
,input
) - By.CSS_SELECTOR: ค้นหาโดยใช้ CSS selector
- By.XPATH: ค้นหาโดยใช้ XPath (เป็นวิธีที่ยืดหยุ่นมาก)
5. การคลิกและโต้ตอบกับ Element
# คลิกปุ่ม
button = driver.find_element(By.ID, 'submit_button')
button.click()input_field = driver.find_element(By.NAME, 'username')
# กรอกข้อมูลลงในฟอร์มinput_field.send_keys('my_username')
checkbox = driver.find_element(By.ID, 'checkbox')
# การเลือก checkboxcheckbox.click()
6. รอการโหลดของ Element
บางครั้งหน้าเว็บอาจจะโหลดข้อมูลช้า Selenium มีฟังก์ชันในการรอ (wait) เพื่อให้ element ปรากฏบนหน้าเว็บก่อนที่จะทำการโต้ตอบ โดยมีทั้งการรอแบบตั้งเวลา (implicit wait) และการรอแบบระบุเงื่อนไข (explicit wait):
- Implicit Wait: Selenium จะรอจนกว่าจะเจอ element ภายในเวลาที่กำหนด
driver.implicitly_wait(10) # รอสูงสุด 10 วินาที
- Explicit Wait: ใช้ในการรอเฉพาะ element หรือเงื่อนไขที่ระบุ
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# รอจนกว่า element ที่มี ID 'my_element' จะปรากฏ
element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'my_element')) )
7. การปิดเบราว์เซอร์
เมื่อการทดสอบหรือการทำงานอัตโนมัติเสร็จสิ้น คุณควรปิดเบราว์เซอร์ด้วยคำสั่ง quit()
หรือ close()
:
close()
: ปิดหน้าต่างเบราว์เซอร์ปัจจุบันเท่านั้น
quit()
: ปิดเบราว์เซอร์ทั้งหมดที่เปิดอยู่โดย Selenium
# การปิดเบราว์เซอร์
driver.quit()
time.sleep(3)
driver.close()
การใช้งานเพิ่มเติม:
- การจัดการหลายหน้าต่าง (Window Handling): ใช้สำหรับสลับไปมาระหว่างแท็บหรือหน้าต่างหลายๆ หน้าต่าง
- การจัดการการแจ้งเตือน (Alert Handling): ใช้ในการจัดการ pop-ups หรือการแจ้งเตือน
- การเลื่อนหน้าเว็บ (Scrolling): คุณสามารถใช้ JavaScript เพื่อเลื่อนหน้าเว็บ
สรุป:
Selenium เป็นเครื่องมือที่ทรงพลังในการทำ automation สำหรับการทดสอบหรือทำงานกับเว็บไซต์ต่าง ๆ โดยการใช้งานใน Python นั้นไม่ซับซ้อน หากเข้าใจหลักการพื้นฐานในการค้นหาและโต้ตอบกับ element บนหน้าเว็บ รวมถึงการจัดการการรอคอยเพื่อให้เว็บโหลดเสร็จสมบูรณ์